我想使用python搜索一列并从csv文件中删除。我不能使用数据帧,因为我需要处理大文件,并且无法将其加载到RAM中。怎么做?示例csv文件-
Home,Contact,Adress
abc,123,xyz
例如,我需要查找并删除联系人。我想使用csv.reader,但不知道如何做到
检查此项:
import csv
col = 'Contact'
with open('your_csv.csv') as f:
with open('new_csv.csv', 'w', newline='') as g:
# creating csv reader
reader = csv.reader(f)
# getting the 'col' index in the header, we want to delete it in the next lines
col_index = next(reader).index(col)
for line in reader:
del line[col_index]
# writing to new csv file
writer = csv.writer(g)
writer.writerow(line)
这里有关于使用newline=''
的说明。
如果您的应用程序仍然喜欢使用panda,我建议您使用panda分块策略。参见以下示例:
iterator = pandas.read_csv('/tmp/abc.csv', chunksize=10**5)
df_new = pandas.DataFrame(columns=['your_remaining_columns'])
for df in iterator:
del df['col_b']
df_new = pandas.concat([df_new, df])
print(df_new.shape[0])
print(df_new.columns)
以前,我可以通过这种方法处理具有复杂数据的50GB csv文件(非utf8编码,单元格包含,
,执行重复数据消除并过滤掉坏行(。