【发布时间】:2021-10-07 19:35:43
【问题描述】:
我有一个大小为 443,00 KB 的大 csv 文件(数据集)。照片显示了文件的样本。我想将行保存到另一个数据框中。我试过这种方式,但它需要这么多时间e
import pandas as pd
df = pd.DataFrame()
for chunk in pd.read_csv("UsersVle.csv", chunksize=10):
for i, row in chunk.iterrows():
if((row['module']=='D3') & (row['presentation']=='13B')):
df.append(row)
在寻找解决方案时,我发现了一些关于chuncksize的东西并尝试了这种方式,但是出现了错误 TypeError: Cannot perform 'rand_' with a dtyped [object] array and scalar of type [bool]
import itertools as IT
chunksize = 10 ** 3
chunks = pd.read_csv('UsersVle.csv', chunksize=chunksize)
chunks = IT.takewhile(lambda chunk: (chunk['module']=='D3' & chunk['presentation']=='13B'), chunks)
df = pd.concat(chunks)
我需要一种有效的方法来读取这个大文件并将满足条件的行保存到另一个数据框中。我会感谢你的帮助。 PS,我尝试了 dask,但似乎没有读取文件,因为我使用了 df.head(),没有返回行!
【问题讨论】:
-
我认为您需要为块大小找到正确的值。通过电影数据集(ratings.csv)尝试时,10 或 1000 对我来说太低了。对我来说最佳值是 10**6。
标签: python-3.x pandas csv memory chunks