Skip to main content
 首页 » 编程设计

python之使用 python 将另一列添加到 CSV 文件

2025年05月04日16me-sa

我希望使用 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