首页 > 解决方案 > 熊猫根据另一列的值替换值

问题描述

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

数据:

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

在此先感谢您的帮助。

洛朗

标签: pythonpandas

解决方案


使用Series.mapby 创建的 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)

推荐阅读