我有一个带有超过5000万条记录的python数据框。我想将它们写到Excel工作表中,每个工作表中的记录应不超过一百万。
答案 0 :(得分:0)
一个想法是将您的df分成一个列表内的50 df,然后:
for i in range(50):
list[i].to_excel("file.xlsx", sheet_name = f"Sheet{i+1}")
答案 1 :(得分:0)
您可以使用.iloc
访问数据的某些行,然后将它们转储到Excel。这是一个示例,其中每张纸发布1000行,当您将其增加到1000000时,将应用相同的基本思想:
import pandas as pd
df = pd.DataFrame({'Val': [i for i in range(5000)]})
GROUP_LENGTH = 1000
writer = pd.ExcelWriter('test.xlsx')
for i in range(0, len(df), GROUP_LENGTH):
print(i)
df.iloc[i:i+GROUP_LENGTH,].to_excel(writer, sheet_name='Row {}'.format(i))
writer.save()
writer.close()
答案 2 :(得分:0)
首先将您拥有的数据分割并保存在各种变量中……在这里,我从数据库中提取了250万数据,并将它们分割为三个(根据您的情况需要)变量...
pserializer=fetchdataSerializers(all_dataobj,many=True)
res = [item for item in pserializer.data if 1 <= item.get('id') <= 1000000]
res1 = [item for item in pserializer.data if 1 <= item.get('id') > 1000000 and
item.get('id') <= 2000000 ]
res2 = [item for item in pserializer.data if 1 <= item.get('id') > 2000000]
然后声明三个(根据情况需要的数量)不同的数据帧.....
df = pd.DataFrame([])
df1 = pd.DataFrame([])
df2 = pd.DataFrame([])
然后将它们附加并写入具有三个(根据情况需要的情况)不同子表的excel表中。
df = df.append(res)
df1 = df1.append(res1)
df2 = df2.append(res2)
writer = ExcelWriter('fetchdata_sheet15.xlsx')
df.to_excel(writer,'Sheet1',index=False)
df1.to_excel(writer,'Sheet2',index=False)
df2.to_excel(writer,'Sheet3',index=False)
writer.save()
就是这样。检查它是否对您有用...谢谢。