【发布时间】:2020-10-02 21:37:16
【问题描述】:
我有两个数据框,需要根据较小数据框的数据更新一个更大的数据框。所以基本上,如果有一条名称匹配的记录,我想更新 df1 中的价格,就像下面的示例一样。 df1 中可能有多个同名的行
df1
id name price
1 name_1 5,34
2 name_2 5,36
3 name_3 4,74
4 name_4 5,23
5 name_5 5,94
6 name_1 5,34
df2
name price
name_4 5,17
name_1 5,37
df_result
id name price
1 name_1 5,37
2 name_2 5,36
3 name_3 4,74
4 name_4 5,17
5 name_5 5,94
6 name_1 5,37
我很困惑。尝试使用 df.loc[] 执行此操作,但我一无所获。有什么想法吗?
【问题讨论】:
-
Tried doing this with df.loc[] but I got nowhere- 将您尝试的代码添加到您的问题中 -
使用
pd.concat([df1,df2]).drop_duplicates(subset=['name'], keep='last') -
或者
df1.merge(df2, on="name", how="left").ffill(axis=1).drop("price_x", axis=1) -
@jezrael 您的方法不会保留替换行上的
"id"列(如果重要,也不会保留索引)。我不确定这是完全重复的。 -
@Dan - 同意,重新打开