【发布时间】:2017-05-10 07:38:46
【问题描述】:
我有一个大约 500,000 行的 excel 文件,我想将其拆分为多个 excel 文件,每个文件有 50,000 行。
我想用 pandas 来做,这样会是最快最简单的。
有什么制作方法吗?
感谢您的帮助
【问题讨论】:
-
你的excel文件是不是只有一张数据表?
我有一个大约 500,000 行的 excel 文件,我想将其拆分为多个 excel 文件,每个文件有 50,000 行。
我想用 pandas 来做,这样会是最快最简单的。
有什么制作方法吗?
感谢您的帮助
【问题讨论】:
假设您的 Excel 文件只有一个(第一个)包含数据的工作表,我将使用 chunksize 参数:
import pandas as pd
import numpy as np
i=0
for df in pd.read_excel(file_name, chunksize=50000):
df.to_excel('/path/to/file_{:02d}.xlsx'.format(i), index=False)
i += 1
更新:
chunksize = 50000
df = pd.read_excel(file_name)
for chunk in np.split(df, len(df) // chunksize):
chunk.to_excel('/path/to/file_{:02d}.xlsx'.format(i), index=False)
【讨论】:
Reading an Excel file in chunks is not implemented任何想法?
pd.__version__?
按照这个答案使用 np.split_array https://stackoverflow.com/a/17315875/1394890 如果你得到
数组拆分不会导致等分
【讨论】:
正如 MaxU 所解释的,我还将使用一个变量 chunksize 并将大文件中的总行数划分为所需的行数。
import pandas as pd
import numpy as np
chunksize = 50000
i=0
df = pd.read_excel("path/to/file.xlsx")
for chunk in np.split(df, len(df) // chunksize):
chunk.to_excel('path/to/destination/folder/file_{:02d}.xlsx'.format(i), index=True)
i += 1
希望这会对你有所帮助。
【讨论】:
import pandas as pd
l = pd.read_excel("inputfilename.xlsx")
total_size = 500,000
chunk_size = 50000
for i in range(0, total_size, chunk_size):
df = l[i:i+chunk_size]
df.to_excel(str(i)+"outputfilename.xlsx")
【讨论】: