我有一个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”的文件...有谁知道如何检索和写入我希望使用的数据到另一个文件?
答案 0 :(得分:3)
您的代码存在一些问题:
col2
,open("test2.txt", "w")
选项将打开您的文件并删除其所有内容。w
值或return
,即print
,然后尝试None
将此文件存入您的文件将您的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)