python - 按组计算每行之后的行数

标签 python pandas

我有以下数据框:

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,然后使用 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

关于python - 按组计算每行之后的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55457895/

相关文章:

python - 如何使用OpenCV在视频上绘制尾线

python - XLSX Writer Python- 3 以数字为中点的色标

python - 忽略Python中的 future 日期

python - POST 请求无法与站点交互

python - 转换后如何取回分类数据?

python - pandas 数据框中行中的唯一文本

python - 根据变量值查找数据框中的最大值

python - 为 Django 用户定义 "remaining time off"的正确方法

python - pyspark中unix时间到日期时间

python - 如何使用 pyodbc 获取 SQL Server 存储过程返回的行集?