我有一个包含大约50列的csv文件,但我只需要大约10列。我希望能够从csv文件中提取我需要的列到新的csv文件。
这篇文章Deleting columns in a CSV with python中的最佳答案看起来就像我需要的那样。
但这是我每天需要做的事情,生成大型CSV文件的系统可以按不同的顺序导出列。所以我需要能够通过名称而不是数字来指定我需要的列。
以下表示CSV文件:
File1.csv
name, description, cost, image, date
ABC, "super, mega", 12.87, ./imagefile, "12/11/2012 08:12"
File2.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]) )
它只适用于第一个文件而不适用于第二个文件。
提前感谢您提出的任何建议!
答案 0 :(得分:1)
使用DictReader类读取它,然后您可以按名称而不是索引写出字段。
答案 1 :(得分: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