我在 Python 中有两个数据帧 - df_itemdf_bill 如下所示:

df_item:

item_id   item_name
2         Noodles
3         Vegetables
4         Dairy Products
5         Ice Cream

df_bill:

bill_no   item_id
201       3
202       2
203       4
204       3
205       5
item_id 排序中的 df_item 列充当每一行的主键。如何在 df_item 中引用 df_bill 以将 item_id 中的 df_bill 转换为 item_name

预期输出:
df_bill:

bill_no  item_name
201      Vegetables
202      Noodles
203      Dairy Products
204      Vegetables
205      Ice Cream

最佳答案

通过 map 使用 Series 但首先通过 item_iddrop 删除列 pop :

s = df_bill['item_id'].map(df_item.set_index('item_id')['item_name'])
df = df_bill.drop('item_id', 1).assign(item_name = s)

或者:
s = df_bill.pop('item_id').map(df_item.set_index('item_id')['item_name'])
df = df_bill.assign(item_name = s)
print (df)
   bill_no       item_name
0      201      Vegetables
1      202         Noodles
2      203  Dairy Products
3      204      Vegetables
4      205       Ice Cream

10-06 03:31