numpy 比较两个具有不同索引的pandas数据框架

uqjltbpv  于 2023-04-30  发布在  其他
关注(0)|答案(1)|浏览(101)

我有两个 Dataframe

data1 = pd.DataFrame({'item': ['A', 'B', 'C'], 'cost': [10, 20, 30], 
                     'quantity': [1, 2, 3]})
data2 = pd.DataFrame({'item': ['B', 'C', 'C','D'], 
                    'cost': [20, 30, 30, 40], 'price': [10, 20, 30, 35], 
                    'serialnumber': ['x', 'y', 'z', 'a'],
                    'color': ['red', 'blue', 'green']})

我想比较data1['item']data1['cost']data2['item']data2['cost']。如果行item和cost都匹配,我想从data2中获取serialnumberprice,并追加到data1
我用了这个python脚本

data1['price','serial']=np.where((data1['item']==data2['item']) & 
                                (data1['cost']==data2['cost']),
                                 data2['price','serialnumber'], np.nan)

我得到一个错误can only compare identically-labeled dataframe objects由于两个 Dataframe 之间的索引不匹配。
预期输出为

item  cost  quantity  price  serial
0    A    10         1    NaN    NaN
1    B    20         2    NaN    NaN
2    C    30         3   30.0      z

请帮我把这件事理清楚

ds97pgxw

ds97pgxw1#

您可以使用合并功能使用左关键字

data1[['price','serial']]=(data1.merge(data2,how='left',on= 

['item','cost']).loc[:,['price','serialnumber']])

相关问题