需要删除多个csv文件的某些特定列和行(按索引),而不创建新文件。
对于下面的代码,它在每行之后为输出提供新的空白行。
import csv
with open('file.csv') as fd:
reader = csv.reader(fd)
valid_rows = [row for idx, row in enumerate(reader) if idx != 0]
with open('file.csv', 'w') as out:
csv.writer(out).writerows(valid_rows)
执行此操作的简单方法是什么(可能是其他python库)?
答案 0 :(得分:3)
由于您不希望生成任何新的csv文件并希望数据执行操作,我建议您使用Pandas Framework。在此框架中使用drop函数。
考虑以下示例:
Sample.csv:
col1,col2,col3,col4
1,2,3,4
5,6,7,8
9,10,11,12
13,14,15,16
17,18,19,20
代码:
import pandas as pd
df = pd.read_csv('./Sample.csv')
要删除列:
df.drop('col3', axis = 1, inplace = True)
df内容:
col1 col2 col4
0 1 2 4
1 5 6 8
2 9 10 12
3 13 14 16
4 17 18 20
删除行:
df.drop(df.index[[1,4]], inplace = True)
df内容:
col1 col2 col4
0 1 2 4
2 9 10 12
3 13 14 16
最后保存已编辑的csv文件:
df.to_csv('new_sample.csv', index = False)