在其他数据框中查找值的有效方法

青葱年少 python 437

原文标题Efficient way to lookup values in other dataframe

我在另一个名为df的DataFrame中查找基于id_number的产品价格,并将每个产品的价格添加到我的df_pairDataFrame中。我现在正在通过以下方式执行此操作:

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_numbersp1值的索引或顺序不同。

原文链接:https://stackoverflow.com//questions/71462389/efficient-way-to-lookup-values-in-other-dataframe

回复

我来回复
  • Khai Kim的头像
    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年前 0条评论
  • Jeff的头像
    Jeff 评论

    假设id_numberdf的索引,你可以这样做:

    df_pair.join(df, on='p1')['price'].sum()
    

    连接是一种标准的数据库操作,它基本上通过将一个列链接到另一个列的索引来合并两个数据帧。

    2年前 0条评论
  • enke的头像
    enke 评论

    另一种选择是set_index与“id_number”和maptheprice

    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年前 0条评论