我有 2 个数据框。对于 dataframe2 中的每一行,我想查看 dataframe1 是否已经在“名称”列中具有相同值的行。如果是这样,我想将 dataframe2 中的行中的数据添加到 dataframe 1 中的相应行。“name”列中的值不应添加。史蒂夫不应该被复制,鲍勃不应该添加新数据。
df1 = pd.DataFrame([{'name': 'Ben', 'goals': 1, 'minutes': 90},
{'name': 'Bob', 'goals': 1, 'minutes': 64},
{'name': 'Kevin', 'goals': 1, 'minutes': 90}])
df2 = pd.DataFrame([{'name': 'Ben', 'goals': 1, 'minutes': 88},
{'name': 'Kevin', 'goals': 1, 'minutes': 3},
{'name': 'Steve', 'goals': 1, 'minutes': 13}])
最终输出应该是:
名字 | 目标 | 分钟 |
---|---|---|
本 | 2 | 178 |
鲍勃 | 1 | 64 |
凯文 | 2 | 93 |
这是我尝试过的
for index, row in df1.iterrows():
if df2.isin([row['name']]).any().any():
position = int(df2[df2['name'] == str(row['name'])].index.values)
df1.iloc[index, 1:] = df1.iloc[index, 1:] + df2.iloc[position, 1:]
谢谢
df = pd.concat([df1, df2.loc[df2["name"].isin(df1["name"])]]).groupby("name").sum()
结果:
goals minutes
name
Ben 2 178
Bob 1 64
Kevin 2 93