熊猫根据另一列中的值替换值

时间:2020-10-30 08:27:20

标签: python pandas

我有两个数据框(数据和价格映射)

数据:

       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数据框中的价格。

预先感谢您的帮助。

洛朗

1 个答案:

答案 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)