计算按组划分的每行之后的行数

问题描述 投票:1回答:1

我有以下数据帧:

group bin
a 0
a 0
a 0
a 1 
a 1
b 0 
b 1
b 1

对于每个组和每行我想要计算每行之后的行数,并且我还想获​​取每行之后的行的bin的总和。所以我正在寻找的输出是这样的:

group bin countafter sum
a     0   4          2
a     0   3          2
a     0   2          2 
a     1   1          1
a     1   0          0

b     0   2          2
b     1   1          1
b     1   0          0 

在这种情况下,组a中的总和对每行之后的所有行的bin进行求和。例如,在组a的第4行中,bin = 1之后只有一行,因此sum为1。

通过执行组,然后执行apply(lambda x :)或过滤器仅对组执行操作。如何为组中的每一行应用计数和求和函数?

python pandas
1个回答
1
投票

IIUC首先使用cumcount,然后使用cumsumsum得到不同的总和

df['countafter']=df.groupby('group').cumcount(ascending=False)
df['sum']=df.groupby('group').bin.transform('sum')-df.groupby('group').bin.cumsum()
df
Out[7]: 
  group  bin  countafter  sum
0     a    0           4    2
1     a    0           3    2
2     a    0           2    2
3     a    1           1    1
4     a    1           0    0
5     b    0           2    2
6     b    1           1    1
7     b    1           0    0
© www.soinside.com 2019 - 2024. All rights reserved.