从csv文件中检索列并将值提取到另一个csv文件

时间:2018-05-18 11:27:00

标签: python csv

我有一个csv文件如下:

lat,lon,date,data1,data2
1,2,3,4,5
6,7,8,9,10

从这个csv文件中我想检索并将列日期和data1提取到另一个csv文件。我有以下代码:

import csv
os.chdir(mydir)
column_names = ["date", "data1"]
index=[]
with open("my.csv", "r") as f:
mycsv = csv.DictReader(f)
for row in mycsv:
    for col in column_names:
        try:
            data=print(row[col])
            with open("test2.txt", "w") as f:
                print(data, file=f)
        except KeyError:
            pass

不幸的是,输出是一个上面带有“none”的文件...有谁知道如何检索和写入我希望使用的数据到另一个文件?

4 个答案:

答案 0 :(得分:3)

您的代码存在一些问题:

  1. 每当您col2open("test2.txt", "w")选项将打开您的文件并删除其所有内容。
  2. 您正在存储w值或return,即print,然后尝试None将此文件存入您的文件
  3. 将您的CSV读入print list的{​​{1}},如下所示:

    dict

    然后使用import csv with open('your_csv.csv') as csvfile: reader = csv.DictReader(csvfile) read_l = [{key:value for key, value in row.items() if key in ('date', 'data1')} for row in reader] 写入新的CSV。

    DictWriter

答案 1 :(得分:2)

尝试以下步骤可能会对您有所帮助。但他们需要pandas library.Install pandas library,然后再去下面的步骤。 input.csv包含您提到的数据。

import pandas as pd
df=pd.read_csv('input.csv')
df_new=df.iloc[0:,2:4]
df_new.to_csv("output.csv",index=False)

答案 2 :(得分:1)

您在文件中看到None的原因是您将print(row[col])的结果分配给data变量:

data=print(row[col])

print()不会返回任何内容,因此data的内容为None。如果您删除了print()并且只有data = row[col],那么您将获得一些有价值的内容。

我在您的代码中还有一个问题,您可能希望修复它:

在第一个循环中,每次迭代都会反复打开文件。因此,对于每一行,您将使用该行值覆盖整个文件。如果你想要整个列,那么你就可以在循环之前打开文件一次。

答案 3 :(得分:1)

我会建议你应该使用熊猫。我没有运行这个脚本但是这样的东西应该可以工作。

import panda as pd
import csv

frame = pd.read_csv('my.csv')
df=frame[['date','data2']]
with open('test2.csv', 'a', newline='') as csvfile:
        writer = csv.writer(csvfile, delimiter=',',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL) 



        writer.writerow(df)