2 回答

TA貢獻1816條經驗 獲得超4個贊
如果需要按連續的布爾值分組,首先按, 然后創建連續的組shift,然后對沒有 的所有列進行聚合,它按以下方式聚合:anycumsumfirstHourssum
df1 = df.select_dtypes(bool)
g = df1.ne(df1.shift()).any(axis=1).cumsum()
d = dict.fromkeys(df.columns, 'first')
d['Hours'] = 'sum'
df = df.groupby(g).agg(d)
print (df)
Time Hours col1 col2 col3
1 10:00 3 True True False
2 13:00 3 False False False
3 16:00 2 True True False

TA貢獻1789條經驗 獲得超10個贊
你可以這樣做:
cond = (df[['col1', 'col2', 'col3']] == df[['col1', 'col2', 'col3']].shift()).all(axis=1)
df.groupby(cond[::-1].cumsum()).agg(dict(Time='first', Hours='sum',
col1='first', col2="first", col3='first'))
```
添加回答
舉報