Tôi có một khung dữ liệu gấu trúc khổng lồ Tôi đang chuyển đổi sang bảng html tức là dataframe.to_html()
, khoảng 1000 hàng. Bất kỳ cách dễ dàng nào để sử dụng phân trang để tôi không phải cuộn toàn bộ 1000 hàng. Giả sử, xem 50 hàng đầu tiên sau đó nhấp vào bên cạnh để xem 50 hàng tiếp theo?Pagination on pandas dataframe.to_html()
6
A
Trả lời
0
Giải pháp tốt nhất mà tôi có thể nghĩ đến liên quan đến một số thư viện JS bên ngoài: JQuery và DataTables plugin. Điều này sẽ cho phép nhiều hơn so với phân trang, với rất ít nỗ lực.
Hãy thiết lập một số HTML, JS và python:
from tempfile import NamedTemporaryFile
import webbrowser
base_html = """
<!doctype html>
<html><head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.16/css/jquery.dataTables.css">
<script type="text/javascript" src="https://cdn.datatables.net/1.10.16/js/jquery.dataTables.js"></script>
</head><body>%s<script type="text/javascript">$(document).ready(function(){$('table').DataTable({
"pageLength": 50
});});</script>
</body></html>
"""
def df_html(df):
"""HTML table with pagination and other goodies"""
df_html = df.to_html()
return base_html % df_html
def df_window(df):
"""Open dataframe in browser window using a temporary file"""
with NamedTemporaryFile(delete=False, suffix='.html') as f:
f.write(df_html(df))
webbrowser.open(f.name)
Và bây giờ chúng tôi có thể tải một tập dữ liệu mẫu để kiểm tra nó:
from sklearn.datasets import load_iris
import pandas as pd
iris = load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
df_window(df)
Một vài lưu ý:
- Lưu ý thông số
pageLength
trong chuỗibase_html
. Đây là nơi tôi đã xác định số hàng mặc định trên mỗi trang. Bạn có thể tìm thấy các tham số tùy chọn khác trong DataTable options page. - Chức năng
df_window
đã được kiểm tra trong sổ ghi chép Jupyter, nhưng cũng nên hoạt động ở đồng bằng python. - Bạn có thể bỏ qua
df_window
và chỉ cần viết giá trị trả lại từdf_html
vào tệp HTML.
Các vấn đề liên quan
- 1. Ruby on Rails Pagination: Sắp xếp thứ tự không được tôn trọng (will_paginate gem)
- 2. Mongoid pagination
- 3. Oracle & Pagination
- 4. jquery pagination
- 5. Backbone JS Pagination
- 6. Lucene 4 Pagination
- 7. Kohana 3 pagination
- 8. django pagination và RawQuerySet
- 9. C#: Pagination, Math.Ceiling
- 10. pagination in jsf
- 11. Tháng pagination với Kaminari
- 12. Codeigniter Pagination - Tôi stumped
- 13. Flask mongoengine pagination
- 14. Pagination sử dụng scrapy
- 15. Ghost Custom Pagination
- 16. JSF, RichFaces, pagination
- 17. Plugin jQuery Pagination
- 18. pagination trong play framework
- 19. Oracle và Pagination
- 20. Thay đổi pagination màu Bootstrap
- 21. MySQL WHERE, LIMIT và pagination
- 22. JCR con thỏ rừng pagination
- 23. SOA/Dịch vụ Web Pagination
- 24. Truy vấn/Pagination Across Microservices
- 25. Giới hạn số trang pagination
- 26. Django lazy QuerySet và pagination
- 27. Django Rest Framework - APIView Pagination
- 28. Python elasticsearch-dsl django pagination
- 29. Không tính đúng pagination vào trang JSF
- 30. Pagination với DynamoDBMapper Java AWS SDK
Đó thực sự là một câu hỏi giao nhau! Nếu "pagination" có thể được thực hiện bằng cách sử dụng các lớp CSS, bạn có thể thử sử dụng [Style] (http://pandas.pydata.org/pandas-docs/stable/style.html) có điều kiện (nghĩa là hàng 0-49 - Kiểu : page1, 50-99 - Kiểu: trang 2, v.v.). – MaxU
Bạn đang cố gắng xem nó trong sổ ghi chép Jupyter, hoặc dưới dạng tệp HTML độc lập? – Shovalt