我有以下数据框:
group bin
a 0
a 0
a 0
a 1
a 1
b 0
b 1
b 1
对于每个组和每一行,我想要计算每行之后的行数,并且我还想要计算每行之后的行的总和。所以我正在寻找的输出是这样的:
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
关于python - 按组计算每行之后的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55457895/