【发布时间】:2019-11-08 09:02:20
【问题描述】:
我有多个(大)csv 文件,让它们分别为 1.csv 和 2.csv。两者都有相同的唯一标识符列。例如,使用标识符name:
1.csv 2.csv
name,age,height name,gender
john,34,176 john,male
mary,19,183 kim,female
kim,27,157
从这些 csv 文件中,我创建了两个数据框 df1 和 df2。
目标是合并一些数据(不是所有列)。条件是该人同时存在于两个 csv 文件中:
result
name,age,gender
john,34,male
kim,27,female
为此,我做了以下工作:
names = df1['name'].tolist()
result_rows = []
for name_iter in names :
age_df = df1[df1['name'] == name_iter ][['age']]
gender_df = df2[df2['name'] == name_iter ][['gender']]
if gender_df.empty:
continue
age = age_df.values[0][0]
gender = gender_df.values[0][0]
row = [name, age, gender]
result_rows.append(row)
之后,我有一个列表列表 (result_rows),我使用 python 内置模块将其写入 csv 文件。
我认为代码很难阅读/理解。有没有更简单的解决方案,即避免将数据帧中的数据放入此任务的列表结构中?
【问题讨论】:
标签: python pandas csv select merge