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'))
```
添加回答
举报