在其他数据框中查找值的有效方法
python 437
原文标题 :Efficient way to lookup values in other dataframe
我在另一个名为df
的DataFrame中查找基于id_number
的产品价格,并将每个产品的价格添加到我的df_pair
DataFrame中。我现在正在通过以下方式执行此操作:
df_pair['price_p1'] = df_pair['p1'].progress_apply(lambda x: df[df['id_number'] == x]['price'].iloc[0])
但似乎,它太慢了。有没有其他更好的解决方案来解决这个问题?我的两个 DataFrame 示例:df
:
id_number | price | … |
---|---|---|
B0000D9MYM | 12.5 | |
B0000D9MYL | 25.26 | |
B00ADHIGBA | 8.9 | |
B00H9OX598 | 10.56 | |
… | …. |
df_pair
如下所示:
p1 | … |
---|---|
B002HQCWYM | |
B00H9OX598 | |
B0000D9MYL | |
… |
注意:id_numbers
和p1
值的索引或顺序不同。
回复
我来回复-
Khai Kim 评论
df_pair.merge(df.rename(columns={"id_number":"p1"}), how="left")
您可以通过合并函数合并 2 个数据帧,但需要相同的列名。(或使用 left_on 和 right_on)
我的英语不好。很难解释很久。如果你有更多问题。告诉我。
ifdf有很多列,slicedf并用f[[“id_number”, “price”]]代替df
我怎样才能在df上制作灰色块?我不想再大胆了
2年前 -
Jeff 评论
假设
id_number
是df
的索引,你可以这样做:df_pair.join(df, on='p1')['price'].sum()
连接是一种标准的数据库操作,它基本上通过将一个列链接到另一个列的索引来合并两个数据帧。
2年前 -
enke 评论
另一种选择是
set_index
与“id_number”和map
theprice
:df_pair['price'] = df_pair['p1'].map(df1.set_index('id_number')['price'])
输出:
p1 ... price 0 B002HQCWYM ... NaN 1 B00H9OX598 ... 10.56 2 B0000D9MYL ... 25.26 3 ...
2年前