自定义groupby基于列值

时间:2017-08-30 11:54:35

标签: python pandas dataframe group-by

鉴于此数据框:

        C
index    
0       9
1       0
2       1
3       5
4       0
5       1
6       2
7       20
8       0

如何将其拆分为

  • 第1组有[9, 0]
  • 第2组有[1, 5, 0]
  • 第3组有[1, 2, 20, 0]

我们的想法是找到所有以0结尾的序列并将它们组合在一起。序列的大小可能不同,最后的序列可能不会以0结尾。第一个元素永远不会是0。

我的最终结果如下:

C_new
9
6
23

我找到这些群体,然后总结它们。

1 个答案:

答案 0 :(得分:1)

Series使用groupby

print (df['C'].shift(1).eq(0).cumsum())
0    0
1    0
2    1
3    1
4    1
5    2
6    2
7    2
8    2
Name: C, dtype: int32

df = df['C'].groupby(df['C'].shift(1).eq(0).cumsum()).sum()
print (df)
C
0     9
1     6
2    23
Name: C, dtype: int64
相关问题