首页 > 解决方案 > 合并两个数据框,最多两列

问题描述

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

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

标签: pythonpandasdataframemergeconcat

解决方案


groupby由 list 和 aggregate 中的两列使用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

推荐阅读