将一个数据框的索引映射到另一个数据框的列

Map index of one dataframe to column of another dataframe

我知道有questions类似的但是他们没有回答我的问题,所以请耐心等待。

我有 2 个数据帧 df1 和 df2。

在df1中,Order ID1为索引,Payment列为空

print(df1)

Order ID1    Sale Price     Payment
OD1             45            
OD2             55
OD3             56

在 df2 中,订单 ID2 是索引。

print(df2)

Order ID2     paid value
OD1             44
OD3             41
OD2             33

我正在尝试将 df1(订单 ID1)的索引映射到 df2(订单 ID2)的索引,并且 return 空 payment 列中相应的 paid value。基本上我正在执行查找程序。

我尝试使用地图功能如下:-

df2['Payment'] = df2.index.map(df1.index)

但我收到以下错误:

TypeError: 'Index' object is not callable

更新:如果Order IDX已经是你的2个数据帧的索引,使用简单的赋值:

df1['Payment'] = df2['paid value']
print(df1)

# Output:
           Sale Price  Payment
Order ID1                     
OD1                45       44
OD2                55       33
OD3                56       41

旧答案

df1['Payment'] = df1['Order ID1'].map(df2.set_index('Order ID2').squeeze())
print(df1)

# Output:
  Order ID1  Sale Price  Payment
0       OD1          45       44
1       OD2          55       33
2       OD3          56       41

那是因为您正在尝试映射索引。您首先需要创建一个字典,其中键是 df2 的索引,值是使用 dict(zip()) 支付的值。然后您可以将其映射到 df1.index 和 return 到您的付款列:

df1['payment'] = df1.index.map(dict(zip(df2.index,df2['paid value'])))

           Sale Price  payment
Order ID1                     
OD1                45       44
OD2                55       33
OD3                56       41