【问题标题】:error while concatenating multiple pandas dataframes连接多个熊猫数据框时出错
【发布时间】:2018-04-03 11:50:52
【问题描述】:

我有 10 个 csv 文件,每个文件的行数接近 100 万。我有一个 for 循环,它遍历文件名并创建一个数据框并连接结果。

for file in filenames:
    df = pd.read_csv('file',sep=',', encoding='utf-8', dtype='object') 
    print (df)
    concatenated_df  = pd.concat(df, ignore_index=True)

我遇到内存错误并且 concat 语句间歇性地失败。 打印 df 工作正常。我的桌面上有 32 GB RAM。有没有更好的方法来解决这个问题?

【问题讨论】:

  • 将它们逐块存储到数据库中
  • 您的连接语句没有达到您的预期。您想将所有数据帧存储在一个列表中,然后将 concat 存储在循环之外
  • 我尝试在循环外使用 list_ = [] ,然后在循环内附加到列表 list_.append(df) 。然后在循环之外我有 frame = pd.concat(list_) 但看起来 concat 由于# CHECK DTYPE 而失败?和内存错误

标签: python pandas


【解决方案1】:

我认为 32GB 的内存足以处理您拥有的数据。假设所有文件都有相同的列数,试试这个:

concatenated_df = pd.concat([pd.read_csv(df, sep=',', encoding='utf-8', dtype='object') for df in filenames])

【讨论】:

  • 尝试您的解决方案时出现以下错误:TypeError: first argument must be an iterable of pandas objects, you pass a object of type "DataFrame"
  • 谢谢曼尼什。我现在没有收到 TypeError 但我仍然收到 MemoryError。
  • @Sun 为什么要合并文件?有什么具体的操作要做吗?
猜你喜欢
  • 2023-02-10
  • 1970-01-01
  • 2019-09-09
  • 2020-01-20
  • 2017-03-05
  • 2014-03-14
  • 2017-10-15
  • 2014-07-03
相关资源
最近更新 更多