【问题标题】:Pandas Concatenate/Merge Two Dataframes with PriorityPandas 优先连接/合并两个数据帧
【发布时间】:2020-04-07 04:14:33
【问题描述】:

如何连接 |合并两个具有优先级的 pandas 数据帧,如果特定列值匹配,则将该行保留在优先级数据帧中。是否有一种连接类型可以描述这一点?

import pandas as pd
Cars = {'Brand': ['Honda Civic','Toyota Corolla','Ford Focus','Audi A4'],
        'Price': [22000,25000,27000,35000]}
Cars2 = {'Brand': ['Honda CRV','Toyota Celica','Ford Explorer','Audi A8'],
        'Price': [40000,25000,37000,100000]}

df_priority = pd.DataFrame(Cars, columns= ['Brand', 'Price'])
df2 = pd.DataFrame(Cars2, columns= ['Brand', 'Price'])

# df_merge_with_priority = Merge dataframes and keep rows from df_priority if price matches

df_merge_with_priority 预期输出:

品牌:本田 CRV、本田思域、丰田卡罗拉、福特探索者、福特福克斯、奥迪 A4、奥迪 A8

价格:40000、22000、25000、27000、37000、35000、100000

请注意 Toyota Corolla 和 Toyota Celica 的价格是一样的,但是在这种情况下,我们只想保留 Corolla。关于如何优先加入的任何想法?

【问题讨论】:

  • 您可以使用 pandas concat 函数来查询条件,请参阅 stackoverflow.com/questions/40065641/… 希望这有助于查看查询部分
  • 试试这个pd.concat([df_priority, df2]).groupby(['Price']).aggregate('max'),如果这是您的要求吗?
  • 您在寻找pd.concat((df_priority,df2)).sort_index().drop_duplicates('Price') 吗?
  • 嘿@vb_rises,这很好用!谢谢
  • 谢谢@Prof.Mo,但是我不确定如何解释您提供的问题,在我看来这是一个条件连接而不是优先级连接

标签: python pandas dataframe join


【解决方案1】:

如果您正在寻找优先级 vs df2,您可以尝试:

pd.concat((df_priority,df2)).sort_index().drop_duplicates('Price') #.reset_index(drop=True)

            Brand   Price
0     Honda Civic   22000
1       Honda CRV   40000
2  Toyota Corolla   25000
3      Ford Focus   27000
4   Ford Explorer   37000
5         Audi A4   35000
6         Audi A8  100000

【讨论】:

    猜你喜欢
    • 2020-09-02
    • 1970-01-01
    • 1970-01-01
    • 2019-11-17
    • 2016-10-30
    • 2012-07-23
    • 2018-07-30
    • 2022-11-25
    • 1970-01-01
    相关资源
    最近更新 更多