熊猫 - 拆分大excel文件



我有一个约500,000行的Excel文件,我想将其拆分为几个Excel文件,每个文件都有50,000行。

我想和大熊猫一起做,这样它将是最快,最简单的。

有什么想法如何制作?

谢谢您的帮助

假设您的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)

根据此答案,请使用np.split_arrayhttps://stackoverflow.com/a/17315875/1394890如果您得到

阵列拆分不会导致平等的除法

正如Maxu所解释的,我还将利用可变的块,并将大文件中的行总数分为所需的行数。

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")

我为此写了一个函数:

import numpy as np
import pandas as pd
def split_excel(file_name, n):  # n: number of chunks or parts (number of outputed excel files)
    df = pd.read_excel(file_name)
    l = len(df)
    c = l // n # c: number of rows
    r = l % c
    if r != 0:  # if it is not divisible
        df[-r:].to_excel(f'part_{l//c+1}.xlsx', index=False)
        df = df[:-r]
    i = 0
    for part in np.split(df, l//c):
        part.to_excel(f'part_{i}.xlsx', index=False)
        i += 1
        
        
split_excel('my_file.xlsx')

最新更新