根据Python中的列值筛选大型csv文件(10GB+;)
编辑:增加了复杂性 我有一个很大的csv文件,我想根据列值筛选出行。例如,考虑以下CSV文件格式:根据Python中的列值筛选大型csv文件(10GB+;),python,pandas,csv,filter,Python,Pandas,Csv,Filter,编辑:增加了复杂性 我有一个很大的csv文件,我想根据列值筛选出行。例如,考虑以下CSV文件格式: Col1,Col2,Nation,State,Col4... a1,b1,Germany,state1,d1... a2,b2,Germany,state2,d2... a3,b3,USA,AL,d3... a3,b3,USA,AL,d4... a3,b3,USA,AK,d5... a3,b3,USA,AK,d6... 我想用Nation==“USA”过滤所有行,然后基于50个州中的每一个。最有
Col1,Col2,Nation,State,Col4...
a1,b1,Germany,state1,d1...
a2,b2,Germany,state2,d2...
a3,b3,USA,AL,d3...
a3,b3,USA,AL,d4...
a3,b3,USA,AK,d5...
a3,b3,USA,AK,d6...
我想用Nation==“USA”
过滤所有行,然后基于50个州中的每一个。最有效的方法是什么?我正在使用Python。谢谢
此外,对于此类任务,R是否优于Python?使用或:
或:
第二个应该更快,请参见
如果仍然不可能(内存不是很多),请尝试使用Jon Clements(谢谢)。使用或:
或:
第二个应该更快,请参见
如果仍然不可能(没有太多RAM),请尝试使用评论过的Jon Clements(谢谢)。一种方法是先过滤csv,然后根据数据大小加载
import csv
with open('yourfile.csv', 'r') as f_in:
with open('yourfile_edit.csv', 'w') as f_outfile:
f_out = csv.writer(f_outfile, escapechar=' ',quoting=csv.QUOTE_NONE)
for line in f_in:
line = line.strip()
row = []
if 'Japan' in line:
row.append(line)
f_out.writerow(row)
现在加载csv
df = pd.read_csv('yourfile_edit.csv', sep = ',',header = None)
你得到
0 1 2 3 4
0 2 a3 b3 Japan d3
一种方法是先过滤csv,然后根据数据的大小进行加载
import csv
with open('yourfile.csv', 'r') as f_in:
with open('yourfile_edit.csv', 'w') as f_outfile:
f_out = csv.writer(f_outfile, escapechar=' ',quoting=csv.QUOTE_NONE)
for line in f_in:
line = line.strip()
row = []
if 'Japan' in line:
row.append(line)
f_out.writerow(row)
现在加载csv
df = pd.read_csv('yourfile_edit.csv', sep = ',',header = None)
你得到
0 1 2 3 4
0 2 a3 b3 Japan d3
您可以打开文件,为
Nation
标题的位置编制索引,然后在阅读器()上迭代
您可以打开文件,为Nation
标题的位置编制索引,然后在阅读器()上迭代
如果机器可以处理加载到筛选器的10gb文件。。。是 啊否则,请直接循环并检查,或者查看dask.dataframe
…如果机器能够处理加载到筛选器的10gb文件。。。是 啊否则直接循环并检查,或者查看dask.dataframe
。。。