我有两个数据框,一个参考表和一个主表。我想将参考表中的值映射到主表,必要时覆盖。视觉形式:
import pandas as pd
ref_data = {'Fruit':['Apple','Pear','Orange'],
'Price':[50,60,70]}
reference_table = pd.DataFrame(ref_data)
main_data = {'col1':[1,2,3,4,5],
'col2':[5,5,5,5,5],
'Fruit':['Durian','Pineapple','Apple','Orange','Pear'],
'Price':[40,120,454,12,43]}
main_data = pd.DataFrame(main_data)
这似乎是一个很常见的用例。我发现以下问题似乎很合适,但在某种意义上似乎有点“怪异”。只想知道是否有适当的方法可以做到这一点?
Pandas -- set row values based on values in another table
谢谢!
我们通常使用np.where
s=reference_table.set_index('Fruit').Price.reindex(main_data.Fruit).values
main_data['Price']=np.where(np.isnan(s),main_data['Fruit'],s)