从python3中的csv文件中删除特定列

时间:2017-11-24 03:07:19

标签: python-3.x csv

需要删除多个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库)?

1 个答案:

答案 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)