Pandas groupby 将每个组视为一个独特的组
Pandas groupby with each group treated as a unique group
请协助。如何获得 pandas groupby 的 cumsum,但我的数据是布尔值 0 和 1。我想将每组 0 或 1 视为唯一值,并在满足新值时重置计数。
我目前有这个总结所有 1 和 0 的值
df['grp'] = df.groupby("dir")["dir"].cumsum())
我想要的输出
df = pd.DataFrame({"dir":[1,1,1,1,0,0,0,1,1,1,1,0,0,0],
"grp": [1,2,3,4,1,2,3,1,2,3,4,1,2,3,]})
使用:
In [1495]: df['grp'] = df.groupby((df['dir'] != df['dir'].shift(1)).cumsum()).cumcount()+1
In [1496]: df
Out[1496]:
dir grp
0 1 1
1 1 2
2 1 3
3 1 4
4 0 1
5 0 2
6 0 3
7 1 1
8 1 2
9 1 3
10 1 4
11 0 1
12 0 2
13 0 3
请协助。如何获得 pandas groupby 的 cumsum,但我的数据是布尔值 0 和 1。我想将每组 0 或 1 视为唯一值,并在满足新值时重置计数。
我目前有这个总结所有 1 和 0 的值
df['grp'] = df.groupby("dir")["dir"].cumsum())
我想要的输出
df = pd.DataFrame({"dir":[1,1,1,1,0,0,0,1,1,1,1,0,0,0],
"grp": [1,2,3,4,1,2,3,1,2,3,4,1,2,3,]})
使用:
In [1495]: df['grp'] = df.groupby((df['dir'] != df['dir'].shift(1)).cumsum()).cumcount()+1
In [1496]: df
Out[1496]:
dir grp
0 1 1
1 1 2
2 1 3
3 1 4
4 0 1
5 0 2
6 0 3
7 1 1
8 1 2
9 1 3
10 1 4
11 0 1
12 0 2
13 0 3