1 回答

TA貢獻1783條經(jīng)驗 獲得超4個贊
done通過 back by 的累積和比較值和 cretae 組iloc[::-1],最后添加另一個iloc[::-1]列的原始順序:
g = df['status'].eq('done').iloc[::-1].cumsum().iloc[::-1]
grouper = df.groupby(g, sort=False)
樣本:
#chnaged data for more groups
print (df)
id price status
0 1 23 none
1 2 23 done
2 3 34 none
3 4 32 none
4 5 31 done
5 6 37 none
6 7 20 none
7 8 29 none
8 9 21 none
9 10 22 done
g = df['status'].eq('done').iloc[::-1].cumsum().iloc[::-1]
print (g)
0 3
1 3
2 2
3 2
4 2
5 1
6 1
7 1
8 1
9 1
Name: status, dtype: int32
grouper = df.groupby(g, sort=False)
for name, df in grouper:
print (df)
id price status
0 1 23 none
1 2 23 done
id price status
2 3 34 none
3 4 32 none
4 5 31 done
id price status
5 6 37 none
6 7 20 none
7 8 29 none
8 9 21 none
9 10 22 done
添加回答
舉報