【发布时间】:2018-12-11 10:24:44
【问题描述】:
我有两个使用 pd.read_csv 作为迭代器加载的大型 csv 文件。这些文件足够大,无法放入内存:
df1 = pd.read_csv('file1.csv', chunksize=5000000, iterator=True)
df2 = pd.read_csv('file2.csv', chunksize=5000000, iterator=True)
文件的内容类似于:
df1
Id val1 val2 val3
1 0.5 0.45 0.13
2 0.11 0.18 0.20
df2
Id val1 val2 val3
1 0.4 0.5 0.20
2 0.13 0.30 0.22
Id 列对于两个文件具有相同的值。列名也是如此。我想要做的是对 val 列中的值取元素平均值,并将它们放在另一个具有相同 Id 列的 csv 中。
所以这个输出看起来像:
Id val1 val2 val3
1 0.45 0.475 0.165
2 0.12 0.24 0.21
关于如何解决这个问题有什么想法吗?
read_csv 是正确的方法,还是我应该改用 dask 之类的方法?我当时的想法是同时迭代迭代器并采用块的方法,然后将它们附加到另一个 csv 文件,但我不确定这是否真的可以用 for 循环之类的东西来实现
【问题讨论】: