Giả sử tôi có 3 từ điển có cùng độ dài, mà tôi kết hợp thành một dataframe pandas
duy nhất. Sau đó, tôi đổ dataframe cho biết vào một tệp Excel. Ví dụ:Gấu trúc: cắt khung dữ liệu thành nhiều trang của cùng một bảng tính
import pandas as pd
from itertools import izip_longest
d1={'a':1,'b':2,'c':3,'d':4,'e':5,'f':6}
d2={'a':1,'b':2,'c':3,'d':4,'e':5,'f':6}
d3={'a':1,'b':2,'c':3,'d':4,'e':5,'f':6}
dict_list=[d1,d2,d3]
stats_matrix=[ tuple('dict{}'.format(i+1) for i in range(len(dict_list))) ] + list(izip_longest(*([ v for k,v in sorted(d.items())] for d in dict_list)))
stats_matrix.pop(0)
mydf=pd.DataFrame(stats_matrix,index=None)
mydf.columns = ['d1','d2','d3']
writer = pd.ExcelWriter('myfile.xlsx', engine='xlsxwriter')
mydf.to_excel(writer, sheet_name='sole')
writer.save()
Mã này tạo ra tập tin với một độc đáo tấm Excel:
>Sheet1<
d1 d2 d3
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
6 6 6
Câu hỏi của tôi: làm thế nào tôi có thể cắt dataframe này theo cách như vậy mà kết quả là các tập tin Excel có , nói, 3 trang tính, trong đó các tiêu đề được lặp lại và có hai hàng giá trị trong mỗi trang tính?
EDIT
Trong ví dụ đưa ra ở đây các dicts có 6 yếu tố từng. Trong trường hợp thực sự của tôi, chúng có 25000, chỉ số của khung dữ liệu bắt đầu từ 1
. Vì vậy, tôi muốn cắt khung dữ liệu này thành 25 lát phụ khác nhau, mỗi lát được đổ vào một trang Excel chuyên dụng của cùng một tệp chính.
Kết quả dự định: một Tệp Excel với nhiều tờ. Tiêu đề được lặp lại.
>Sheet1< >Sheet2< >Sheet3<
d1 d2 d3 d1 d2 d3 d1 d2 d3
1 1 1 3 3 3 5 5 5
2 2 2 4 4 4 6 6 6
gì 'SHEET_NAME = 'super _ {}' định dạng (trang tính) 'làm gì? Có, nó đặt tên cho các tờ, nhưng làm thế nào? – FaCoffee
Ngoài ra, vì 'mydf.index' bắt đầu từ' 1', bạn bắt đầu từ '0' như thế nào? – FaCoffee
@ CF84 là định dạng chuỗi. Tôi đã tạo ra '' supe_'' và có thể là bất cứ thứ gì bạn chọn. '{}' trong đó đi với '.format (sheet)' trong đó giá trị trong 'sheet' được đặt trong đó' {} 'nằm trong chuỗi. Vì vậy, bạn sẽ lặp qua các giá trị '[0, 1, 2]' và ''super _ {}'. Định dạng (trang tính)' sẽ đánh giá thành ''super_0'','' super_1'' và ''super_2' '. Thay thế nó khi bạn thấy phù hợp. – piRSquared