python - 具有不同聚合的不同列的 Groupby 与另一个数据集的 cumsum

标签 python pandas pandas-groupby cumsum

我有一个按日期和时间排序的数据框: df1:

ID    Date     A_sum  A_count   B_sum   B_count  A_last  B_last  
abc   01/jan    26       2        25       2       0      0
xyz   01/jan    54       3        45       3       4      6

df2:

ID     Date     Time      A         B
abc   02/jan     11       10        10 
abc   02/jan     12       14        13
xyz   02/jan      1       26        24
xyz   02/jan      2       18        15
xyz   02/jan      3       20        16

我想在 id 上附加这两个 dfs 并想将 df2 更新为输出:

ID    Date     A_sum             A_count    B_sum   B_count  A_last  B_last  
abc   02/jan  50 #26+10+14        4 #2+2     48       4      14      13
xyz   02/jan  118 #54+26+18+20    6 #3+3    100       6      20      16

所以它从 df1 中获取列的先前值并将其添加到 df2

最佳答案

您可以使用 .groupby() named aggregation df2 转换为与 df1 相同的布局,然后将结果附加到 df1,然后是另一轮 groupby() 和聚合,如下:

df3 = (df2.groupby(['ID', 'Date'], as_index=False, sort=False)
          .agg(A_sum=('A', 'sum'), A_count=('A', 'count'), 
               B_sum=('B', 'sum'), B_count=('A', 'count'), 
               A_last=('A', 'last'), B_last=('B', 'last'))
      )

df_out = (df1.append(df3)
             .groupby('ID', as_index=False)
             .agg({'Date': 'last', 
                   'A_sum': 'sum', 'A_count': 'sum', 
                   'B_sum': 'sum', 'B_count': 'sum', 
                   'A_last': 'last', 'B_last': 'last'})
         )

结果:

print(df_out)


    ID    Date  A_sum  A_count  B_sum  B_count  A_last  B_last
0  abc  02/jan     50        4     48        4      14      13
1  xyz  02/jan    118        6    100        6      20      16

关于python - 具有不同聚合的不同列的 Groupby 与另一个数据集的 cumsum,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67871254/

相关文章:

python - Tkinter wm_attributes 没有 Linux 中的所有选项

Python Django 多行形式

python - 将 dict 中的列表作为值更改为 dict 中的正常值

python - 在 pandas DataFrame 中查找和替换行特定数据的最快方法

python - 用 pandas 识别统计异常值 : groupby and individual columns

python - cv2.imshow 图像窗口放置在可视屏幕之外

python根据行值添加一列

python - 为 Pandas 创建自定义插值函数

python - pandas groupby 并聚合两列以获得各自的总数,然后计算比率 - 总结摘要

python - pandas 列与其索引 groupby 的乘积