我在磁盘上有数千个 csv 文件。它们每个的大小约为 ~10MB(~10K 列)。这些列中的大多数都包含实数(浮点)值。
我想通过连接这些文件来创建一个数据框。一旦我有了这个数据框,我想按前两列对其条目进行排序。
我目前有以下内容:
my_dfs = list()
for ix, file in enumerate(p_files):
my_dfs.append(
pd.read_csv(p_files[ix], sep=':', dtype={'c1' : np.object_, 'c2' : np.object_}))
print("Concatenating files ...")
df_merged= pd.concat(my_dfs)
print("Sorting the result by the first two columns...")
df_merged = df_merged.sort(['videoID', 'frameID'], ascending=[1, 1])
print("Saving it to disk ..")
df_merged.to_csv(p_output, sep=':', index=False)
但这需要太多内存,以至于我的进程在得到结果之前被杀死(在日志中我看到该进程在使用大约 10GB 的内存时被杀死)。
我试图弄清楚它到底在哪里失败,但我仍然无法做到(尽管我希望尽快记录标准输出)
在 Pandas 中有没有更好的方法来做到这一点?