3

我有一个包含大约 50 列的 csv 文件,但我只需要大约 10 列。我希望能够从该 csv 文件中提取我需要的列到一个新的 csv 文件中。

这篇文章的最佳答案如何删除 CSV 文件中的列?看起来它会完全满足我的需要。

但这是我每天都需要做的事情,生成大 CSV 文件的系统可以以不同的顺序导出列。所以我需要能够通过名称而不是数字来指定我需要的列。

以下是 CSV 文件的指示:

文件 1.csv

name, description, cost, image, date
ABC, "super, mega", 12.87, ./imagefile, "12/11/2012 08:12"

文件2.csv

name, cost, date, description, image
SYZ, 43.98, "16/11/2012 09:16", "Some text, and such", ./image2.jpeg

我只想保留名称、描述和图像字段,但如果我使用代码(由@S.Lott从上面的帖子派生):

import csv
with open("source","rb") as source:
rdr= csv.reader( source )
with open("result","wb") as result:
    wtr= csv.writer( result )
    for r in rdr:
        wtr.writerow( (r[0], r[1], r[3]) )

它仅适用于第一个文件,而不适用于第二个文件。

4

2 回答 2

1

使用DictReader类读取它,然后您可以按名称而不是按索引写出字段。

于 2012-11-16T05:06:03.317 回答
1

使用pandas的优势在于,不仅可以轻松地以不同格式打开和保存文件以及修改列和行,还因为您还可以根据需要修改、计算和使用数据。

要获得包含选定列的 csv 文件,非常简单:

import pandas as p

df = p.read_csv('File2.csv')  # reads your csv file as a table (dataframe object)

df2 = df[['cost', 'date']]    # selects two of the columns in your file

df2.to_csv('my_out.csv')      # saves again in csv format
于 2012-11-16T09:33:23.363 回答