我有两个具有相同形式的数据框:
> 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'])
最佳答案
对列表和聚合中的两列使用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
关于python - 合并两个数据框,最多取两列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53581707/