python-3.x - 当存在列的公共行但没有结果时,尝试用另一个数据框的值替换数据框的列的值
问题描述
我有两个数据框
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)
但由于某种原因,它不起作用。有什么帮助吗?还有什么办法吗?
解决方案
您很接近,需要Series.map
按列Line Item
和不匹配的值替换为原始值Series.fillna
:
db['Creative Size'] = db['Line Item'].map(rename_dict).fillna(db['Creative Size'])
推荐阅读
- c++ - 为什么我们可以这样做: Base *base = new Derived; 而我们不能做 Derived *derived = new Base?
- php - DomDocument 在样式元素中从文件中插入 CSS
- flutter - 在颤动中从 listView 导航页面
- excel - 将 vba 查找和替换限制为活动工作表
- php - CakePHP 4 自定义插件找不到类
- styles - Material-UI 主题:如何管理 .MuiXXX 类的应用顺序或优先级?
- python - 如何将父参数的值设置为子方法?
- php - 如何使用 PHP 准备无数不同类型的字段
- php - 如何正确格式化字符串以浮动而没有不必要的小数位?
- python - BeautifulSoup 4 - 如何用它的文本替换锚标签