python - 熊猫根据另一列的值替换值
问题描述
我有两个数据框(数据和价格映射)
数据:
Global id Price
0 AR.1852218.1
1 AR.1852223.1 0,6
2 AR.1852251.1 0,56
3 AR.1852254.1
4 AR.1852257.1 0,25
5 AR.1852386.1 0,33
6 AR.1852549.1
价格映射:
G.ID Price
0 AR.1852218.1 0,1
1 AR.1852254.1 0,25
2 AR.1852549.1 0,33
我想根据标准 Global id=G.ID 填写 priceMapping 数据框中的价格。
在此先感谢您的帮助。
洛朗
解决方案
使用Series.map
by 创建的 SeriespriceMapping
然后将不匹配的值替换为原始 by Series.fillna
,因为不匹配的值会创建缺失值:
s = priceMapping.set_index('G.ID')['Price']
Data['Price'] = Data['Global id'].map(s).fillna(Data['Price'])
print (Data)
Global id Price
0 AR.1852218.1 0,1
1 AR.1852223.1 0,6
2 AR.1852251.1 0,56
3 AR.1852254.1 0,25
4 AR.1852257.1 0,25
5 AR.1852386.1 0,33
6 AR.1852549.1 0,33
另一个想法是使用Series.replace
:
s = priceMapping.set_index('G.ID')['Price']
Data['Price'] = Data['Global id'].replace(s)
推荐阅读
- redux - Redux 传奇 - 无法调度操作:__webpack_require__.i(...) 不是函数
- mysql - MySQL 需要不同的指导
- python - Python 中的 for 循环 - 如何在循环内修改 i
- sql-server - 使用返回 null 的 PARSENAME 进行分隔 - SQL Server
- excel - 根据单元格值生成单词
- php - 今天和明天的 PHP 生日通知
- python - 如何按名称加载python模块的抽象语法树?
- linux - 默认信号处理程序和 EINTR
- php - 强制点击提交按钮两次
- dataframe - 如果下一个观察值相差 1 年,则从某些列中移动行