首页 > 解决方案 > 当存在列的公共行但没有结果时,尝试用另一个数据框的值替换数据框的列的值

问题描述

我有两个数据框

db
index| Line Item | Creative Size
1    | AA        | Size1
2    | BB        | Unknown
3    | CC        | Unknown

df1
index| Line Item | Size
1    | BB        | Size2
2    | CC        | Size3

当 Line Item 代码相同时,我想将 Creative Size 的值替换为 Size 的值。我的预期输出是:

db:
index| Line Item | Creative Size
1    | AA        | Size1
2    | BB        | Size2
3    | CC        | Size3

请注意,df1 的大小小于 db 的大小。

我想出:

rename_dict = df2.set_index('Line Item').to_dict()['Size']
db['Creative Size'] = db['Creative Size'].replace(rename_dict)

但由于某种原因,它不起作用。有什么帮助吗?还有什么办法吗?

标签: python-3.xpandas

解决方案


您很接近,需要Series.map按列Line Item和不匹配的值替换为原始值Series.fillna

db['Creative Size'] = db['Line Item'].map(rename_dict).fillna(db['Creative Size'])

推荐阅读