Pug*_*gie 11 python vectorization pandas
假设我们有以下pandas DataFrame:
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
Run Code Online (Sandbox Code Playgroud)
如何在熊猫中以矢量化方式计算连续数?我希望得到这样的结果:
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
Run Code Online (Sandbox Code Playgroud)
类似于矢量化的cumsum操作,可以在特定条件下重置.
Ash*_*ary 12
你可以做这样的事情(信誉转到:如何用系列/数据帧模拟itertools.groupby?):
>>> 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
Run Code Online (Sandbox Code Playgroud)