我试图了解如何基于Pandas中的2个索引来总结行的子集。第一个索引对行进行分组,第二个索引将确定要累加的行。举个最小的例子,假设我有数据框

index1 | index2 | value
------------------------
  a    |    1   |  10
  a    |    2   |  11
  a    |    3   |  12
  b    |    1   |  20
  b    |    2   |  21
  b    |    3   |  22


如何汇总与索引12对应的行,但仍将它们分组在索引ab下。即以下结果。

index1 | index2 | value
------------------------
  a    |    1   |  21
  a    |    2   |  12
  b    |    1   |  41
  b    |    2   |  22


此处,与index212相对应的行已加到index2的新1中。

最佳答案

您可以从index2列派生一个新数组/系列作为组变量,然后进行求和:

df.groupby([df.index1, ~df.index2.isin([1,2]) + 1]).value.sum().reset_index()

#index1 index2  value
#0    a      1     21
#1    a      2     12
#2    b      1     41
#3    b      2     22

关于python - 在 Pandas 中基于条件求和,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42634430/

10-09 12:42