gpt4 book ai didi

python - 带有 chunksize 选项的 pandas.read_csv 函数的奇怪索引机制

转载 作者:行者123 更新时间:2023-11-28 22:25:10 27 4
gpt4 key购买 nike

由于数据量巨大,我们使用pandas来处理数据,但是出现了一个很奇怪的现象。伪代码如下所示:

reader = pd.read_csv(IN_FILE, chunksize = 1000, engine='c')
for chunk in reader:
result = []
for line in chunk.tolist():
temp = complicated_process(chunk) # this involves a very complicated processing, so here is just a simplified version
result.append(temp)
chunk['new_series'] = pd.series(result)
chunk.to_csv(OUT_TILE, index=False, mode='a')

我们可以确认每个循环的结果都不为空。但只有在循环的第一次,行 chunk['new_series'] = pd.series(result) 有结果,其余为空。因此,只有输出的第一个 block 包含 new_series,其余为空。

我们在这里错过了什么吗?提前致谢。

最佳答案

你应该在你的循环之上声明result,否则你只是用每个 block 重新初始化它。

result = []
for chunk in reader:
...

您之前的方法在功能上等同于:

for chunk in reader:
del result # because it is being re-assigned on the following line.
result = []
result.append(something)
print(result) # Only shows result from last chunk in reader (the last loop).

此外,我建议:

chunk = chunk.assign(new_series=result)  # Instead of `chunk['new_series'] = pd.series(result)`.

我假设您正在使用 for 循环 中的 line 变量做一些事情,即使它没有在上面的示例中使用。

关于python - 带有 chunksize 选项的 pandas.read_csv 函数的奇怪索引机制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45706833/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com