我正在使用一个大型(3.5GB).csv文件,我无法在内存中完全处理并希望:
最终结果将是一个单独的.csv,其中包含符合条件的所有行。
答案 0 :(得分:2)
我会这样做:
chunksize = 10**6 // 2 # you may want to adjust it ...
for chunk in pd.read_csv(filename, chunksize=chunksize):
(chunk.query('condition1 & condition2 & ... ')
.to_csv('output.csv', mode='a', index=False))
诀窍是mode='a'
参数,它会指示pandas 添加行而不是覆盖CSV文件......
答案 1 :(得分:1)
尝试以下代码。将适当数量的记录(您的机器允许)设置为块大小。
ButtonPress
答案 2 :(得分:0)
我发现以下内容对我有用。请注意,这也为列表中的每个条件值生成了单独的输出文件。
import csv
# criteria is the column number from the source data to check against the values list
criteria = 4
valueslist= ['criteria1','criteria2','criteria3']
for item in valueslist:
with open('sourcedata.csv', 'rb') as inf, open(item + '.csv','wb') as outf:
reader = csv.reader(inf)
writer = csv.writer(outf)
# -- Write Headers as first row
writer.writerow(["column1", "column2", "column3"])
for row in reader:
if row[criteria] == item:
writer.writerow(row)