合并两个数据帧,最多占用两列

时间:2018-12-02 15:27:45

标签: python pandas dataframe merge concat

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

> 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'])

1 个答案:

答案 0 :(得分:0)

在列表中的两列中同时使用groupby和汇总max

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