Python 以矢量化方式计算特定连续相等值的数量
假设我们有以下数据帧:Python 以矢量化方式计算特定连续相等值的数量,python,pandas,vectorization,Python,Pandas,Vectorization,假设我们有以下数据帧: In [1]: import pandas as pd import numpy as np df = pd.DataFrame([0, 1, 0, 0, 1, 1, 0, 1, 1, 1], columns=['in']) df Out[1]: in 0 0 1 1 2 0 3 0 4 1 5 1 6 0 7 1 8 1 9 1 如何以矢量化的方式计算熊猫中连续数?我希望得到这样的结果: in out 0
In [1]:
import pandas as pd
import numpy as np
df = pd.DataFrame([0, 1, 0, 0, 1, 1, 0, 1, 1, 1], columns=['in'])
df
Out[1]:
in
0 0
1 1
2 0
3 0
4 1
5 1
6 0
7 1
8 1
9 1
如何以矢量化的方式计算熊猫中连续数?我希望得到这样的结果:
in out
0 0 0
1 1 1
2 0 0
3 0 0
4 1 1
5 1 2
6 0 0
7 1 1
8 1 2
9 1 3
类似于在特定条件下重置的矢量化求和运算。您可以执行类似操作(贷记到:):
公平竞争。我的头撞了这个40分钟:P@Ffisegydd这里也一样:-),但我有一种感觉,有人会要求使用itertools.groupby相当于某个地方的熊猫groupy。是的,我知道我想要它,只是从来都懒得用谷歌搜索它>\u@AshwiniChaudhary你会做一个拉式请求,将它添加到烹饪书中吗,在本节的某个地方:
>>> df['in'].groupby((df['in'] != df['in'].shift()).cumsum()).cumsum()
0 0
1 1
2 0
3 0
4 1
5 2
6 0
7 1
8 2
9 3
dtype: int64