python - 合并两个数据框,最多取两列

标签 python pandas dataframe merge concatenation

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

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

最佳答案

对列表和聚合中的两列使用groupbymax:

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/

相关文章:

python - 如何将多个值的单行拆分为多个单独的行

python - 将 Dataframe 转换为包含 Pandas 数组的单元格的 Series

python - pandas 基于列子集的行选择

python - 合并 Pandas 中的多个列但跳过某些项目

python - 访问 twisted.web.client.Agent 的套接字选项

python - 结合 apply 和append 将一行追加 N 次到 Pandas DF 中

python - 如何加载和使用 PyTorch (.pth.tar) 模型

python - 更改马赛克图的默认颜色

Python - iterrows 的替代解决方案

python - 计算以参数为条件的 pandas df 的平均值