大熊猫群集?

时间:2018-02-19 11:03:35

标签: python pandas

我正在尝试将数据集中在pandas中,而groupby适用于大多数问题,我很难找到分组集群的解决方案。

给定一个数据框,例如

df = pd.DataFrame({'x': [1,2,3,4,5], 'y':[1,4,9,16,25], 'valid':[0,1,1,0,1]})

for value, group in df.groupby(by='valid'):
   print(value)
   print(group)

这允许将数据分成两组:

   valid  x   y
0      0  1   1
3      0  4  16

   valid  x   y
1      1  2   4
2      1  3   9
4      1  5  25   

我如何修改它以获得三个不同的组,其中组由“有效”列的连续范围确定? E.g:

   valid  x   y
0      0  1   1

   valid  x   y
3      0  4  16

   valid  x   y
1      1  2   4
2      1  3   9

   valid  x   y
4      1  5  25   

Pandas中是否存在类似群组的内容?

1 个答案:

答案 0 :(得分:1)

shift d列与ne !=进行比较,并为连续组Series添加cumsum

for value, group in df.groupby(df['valid'].ne(df['valid'].shift()).cumsum()):
   print(value)
   print(group)

1
   valid  x  y
0      0  1  1
2
   valid  x  y
1      1  2  4
2      1  3  9
3
   valid  x   y
3      0  4  16
4
   valid  x   y
4      1  5  25

<强>详细

print(df['valid'].ne(df['valid'].shift()).cumsum())

0    1
1    2
2    2
3    3
4    4
Name: valid, dtype: int32