我希望使用 python 将另一列添加到 CSV 文件中。
file1 是 Date.csv 有格式
ID, Date
0,"Jan 22, 2016"
1,"Jan 21, 2016"
2,"Jan 20, 2016"
3,"Jan 19, 2016"
和
文件2是Price.csv
ID, Price
0,27.89
1,26.80
2,26.78
3,26.00
我想要的输出是(在 Date.csv 中)
ID, Date
0,"Jan 22, 2016", 27.89
1, "Jan 21, 2016", 26.80
2, "Jan 20, 2016", 26.78
3, "Jan 19, 2016", 26.00
但我要退的是重复的价格
0,27.89,27.89
1,26.80,26.80
2,26.78,26.78
3,26.00,26.00
我的程序如下
import csv
with open('C:/Users/User/OneDrive/Documents/Price.csv','r') as csvinput:
with open('C:/Users/User/OneDrive/Documents/Date.csv', 'w') as csvoutput:
writer = csv.writer(csvoutput, lineterminator='\n')
reader = csv.reader(csvinput)
all = []
row = next(reader)
for row in reader:
row.append(row[1])
all.append(row)
writer.writerows(all)
感谢一些指导,干杯
请您参考如下方法:
您不能只将单个列写入现有文件。最好的选择是创建一个新文件。如果两个文件的数据都是有序的,那么您可以简单地将它们压缩并写出更新的字典:
with open('C:/Users/User/OneDrive/Documents/Date.csv') as file1, \
open('C:/Users/User/OneDrive/Documents/Price.csv') as file2, \
open('C:/Users/User/OneDrive/Documents/Output.csv', 'w') as output:
reader1 = csv.DictReader(file1)
reader2 = csv.DictReader(file2)
writer = csv.DictWriter(output, ['ID', 'Date', 'Price'])
writer.writeheader() # Optional if you want the header
for row1, row2 in zip(reader1, reader2):
row1.update(row2)
writer.writerow(row1)
Pandas 也是另一种选择:
import pandas as pd
file1 = pd.read_csv('Data.csv', index_col='ID')
file2 = pd.read_csv('Price.csv', index_col='ID')
pd.concat([file1,file2], axis=1).to_csv('Output.csv')
输出:
ID,Date,Price
0,"Jan 22, 2016",27.89
1,"Jan 21, 2016",26.80
2,"Jan 20, 2016",26.78
3,"Jan 19, 2016",26.00
