我有以下数据帧:
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 :)或过滤器仅对组执行操作。如何为组中的每一行应用计数和求和函数?
IIUC首先使用cumcount
,然后使用cumsum
和sum
得到不同的总和
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