我有两个数据框(数据和价格映射)
数据:
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
priceMapping:
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数据框中的价格。
预先感谢您的帮助。
洛朗
答案 0 :(得分:2)
按priceMapping
创建的系列使用Series.map
,然后用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)