如何用Python中的另一个dataframe引用pandas数据帧?

2024-06-16 10:47:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我在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

df_item排序中的item_id列充当每行的主键。我如何引用df_bill中的df_item,以使df_bill中的item_id转换成{}?在

预期产量:

^{pr2}$

Tags: 数据nonameiddf排序itemproducts
3条回答
df_bill=df_bill.merge(df_item).drop('item_id',axis=1).sort_values('bill_no').set_index('bill_no')

Series使用^{},但首先删除drop或{}列item_id

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)

或者:

^{pr2}$
print (df)
   bill_no       item_name
0      201      Vegetables
1      202         Noodles
2      203  Dairy Products
3      204      Vegetables
4      205       Ice Cream

您可以使用item_id列来join这两个数据帧。为此,您首先需要正确设置索引,然后重置索引并删除superflous列:

df_bill = df_bill.set_index("item_id")
df_item = df_item.set_index("item_id")
df = df_bill.join(df_item).reset_index()
df.drop(columns=["item_id"], inplace=True)

或者,作为一系列行动:

^{pr2}$

或者,可能最简单的方法是使用^{}

df = df_bill.merge(df_item).drop(columns=["item_id"])

但它们都把bill_no的顺序搞得一团糟:

   bill_no       item_name
0      201      Vegetables
1      204      Vegetables
2      202         Noodles
3      203  Dairy Products
4      205       Ice Cream

但是,您可以随时调用df.sort_values("bill_no")对其进行再次排序:

   bill_no       item_name
1      201      Vegetables
0      202         Noodles
3      203  Dairy Products
2      204      Vegetables
4      205       Ice Crea

相关问题 更多 >