【问题标题】:Merge two data frames with taking max of two columns合并两个数据框,最多两列
【发布时间】:2019-05-04 00:51:54
【问题描述】:

我有两个格式相同的数据框:

> df1
Day ItemId Quantity
  1      1        2
  1      2        3
  1      4        5

> df2
Day ItemId Quantity
  1      1        0
  1      2        0
  1      3        0
  1      4        0

我想合并 df1 和 df2,如果 df1 和 df2 中都存在一行['Day','ItemId'],则取 df1 的最大值 我试过这个命令:

df = pd.concat([df1, df2]).groupby(level=0).max(df1['Quantity'],df2['Quantity'])

【问题讨论】:

    标签: python pandas dataframe merge concat


    【解决方案1】:

    在列表和聚合max 的两列中使用groupby

    df = pd.concat([df1, df2]).groupby(['Day','ItemId'], as_index=False)['Quantity'].max()
    print (df)
       Day  ItemId  Quantity
    0    1       1         2
    1    1       2         3
    2    1       3         0
    3    1       4         5
    

    如果可能多列:

    df = (pd.concat([df1, df2])
            .sort_values(['Day','ItemId','Quantity'], ascending=[True, True, False])
            .drop_duplicates(['Day','ItemId']))
    print (df)
    
       Day  ItemId  Quantity
    0    1       1         2
    1    1       2         3
    2    1       3         0
    2    1       4         5
    

    【讨论】:

    • @Dr.know - 你能解释更多吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-20
    • 2019-09-19
    • 1970-01-01
    • 2019-05-01
    • 1970-01-01
    相关资源
    最近更新 更多