【问题标题】:Pandas - split large excel filePandas - 拆分大型excel文件
【发布时间】:2017-05-10 07:38:46
【问题描述】:

我有一个大约 500,000 行的 excel 文件,我想将其拆分为多个 excel 文件,每个文件有 50,000 行。

我想用 pandas 来做,这样会是最快最简单的。

有什么制作方法吗?

感谢您的帮助

【问题讨论】:

  • 你的excel文件是不是只有一张数据表?

标签: python excel pandas


【解决方案1】:

假设您的 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任何想法?
  • @TheDaJon,你的熊猫版本是什么:pd.__version__
  • 0.17.1 这是我的版本
  • 我高兴得太快了……它确实拆分了文件,尽管块总是比我选择的要大。知道为什么吗?
  • 当记录数为奇数时,数组拆分不会导致等分
【解决方案2】:

按照这个答案使用 np.split_array https://stackoverflow.com/a/17315875/1394890 如果你得到

数组拆分不会导致等分

【讨论】:

    【解决方案3】:

    正如 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
    

    希望这会对你有所帮助。

    【讨论】:

      【解决方案4】:
      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")
      

      【讨论】:

      • edit您的帖子包含解释
      猜你喜欢
      • 1970-01-01
      • 2014-04-10
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 2013-05-19
      • 1970-01-01
      • 2015-10-03
      • 1970-01-01
      相关资源
      最近更新 更多