我怎样才能删除某些列然后将想要的列写入 csv python

How could I delete certain columns then write wanted columns into csv python

我有一个 .csv 文件,我想删除不需要的某些列。 例如,

   ID,Name,Nickname,Income,Car,  ..............
    1,A,test,12k,Benz, ..............
    2,B,test1,23k,Audi, ..............
    3,C,test2,20k,BMW,  ..............

但是,我不需要他们的昵称和汽车品牌信息。 因此我有另一个 .csv 文件来列出我不需要的列信息。

Remove_list,
Nickname,
Car,
.
.
.
.
.

最后,我想要一个新的 .csv 输出文件,如下所示。

ID,Name,Income, ......
1,A,12k,   ......
2,B,23k,   .......
3,C,20k,   ........ 

有人知道如何实现吗?我只知道如何按行方向而不是列来计算。

我还发现有人用 c# 做到了,但我只在 python 上工作。 (参见 C# 示例,How do I delete certain column from .csv file

非常感谢您的帮助,

您可以使用 del 语句删除列表中的值。 假设您在 "csv_table" 变量中有 csv 数据,并且在 "columns" 变量中有要删除的 headers 列表,您可以这样做:

columns_indexes = sorted([index for index,column in enumerate(csv_table[0]) 
if column in columns],reverse=True)
for line in csv_table:
    for index in columns_indexes:
        del line[index]

csv_table 变量现在将反映您想要的列表。您可以使用 csv 模块轻松读取 csv 文件。

假设 csv 文件 orig.csv:

ID,Name,Nickname,Income,Car
1,A,test,12k,Benz
2,B,test1,23k,Audi
3,C,test2,20k,BMW

remove_list.csv

Nickname
Car

我们可以做这样的事情来过滤:

def remove_cols():
    remove_list = []

    with open('remove_list.csv') as f:
        for line in f:
            remove_list.append(line.strip())

    colIndexesToKeep = []

    with open('orig.csv') as origFile:
        with open('filtered.csv', 'w') as filteredFile:
            for line in origFile:
                if not colIndexesToKeep:
                    for ix, name in enumerate(line.split(',')):
                        if name.strip() not in remove_list:
                            colIndexesToKeep.append(ix)

                filteredLine = [val.strip() for ix, val in 
                  enumerate(line.split(',')) if ix in colIndexesToKeep]
                filteredFile.write(','.join(filteredLine))     
                filteredFile.write('\n')           

给出输出 filtered.csv:

ID,Name,Income
1,A,12k
2,B,23k
3,C,20k