【发布时间】: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