2 回答
TA贡献1805条经验 获得超10个赞
创建一个函数,读取文件中提到的sample.csv,然后比较id并返回相应的message
import csv
def get_message(name, id):
with open(name) as fp:
reader = csv.DictReader(fp)
for row in reader:
if row['id'] == id:
return row['message']
with open('sample.csv') as fp, open('output.csv', 'w') as fw:
reader = csv.reader(fp)
writer = csv.writer(fw)
columns = next(reader)[:-1] + ['message']
writer.writerow(columns)
for row in reader:
new_row = row[:-1] + [get_message(row[-1], row[0])]
writer.writerow(new_row)
输出:
id name contactno. message
1 robin 1234455 my name is robin. I am from Berlin
2 elsa,roy 42342442 my name is Elsa. My age is 12
3 john 232323 my name is John.I play football.
TA贡献1848条经验 获得超10个赞
这是一种不同的方法,它使用pandas:
import numpy as np
import pandas as pd
df = pd.read_csv('sample.csv')
files = df['fileName'].unique()
for f in files:
df = df.merge(pd.read_csv(f), on='id', how='left')
df['message'] = np.where(df['message_x'].isnull(), df['message_y'], df['message_x'])
df.drop(columns=['message_x', 'message_y', 'fileName'], inplace=True)
df.to_csv('output.csv', index=False)
输出:
id name contactno. message
1 robin 1234455 my name is robin. I am from Berlin
2 elsa,roy 42342442 my name is Elsa. My age is 12
3 john 232323
添加回答
举报