亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 pandas Dataframe(時間序列組)中聚合相同的連接行

在 pandas Dataframe(時間序列組)中聚合相同的連接行

慕萊塢森 2023-05-23 10:51:47
假設一個時間序列 fe:Time  Hours col1  col2  col310:00     2 True  True  False12:00     1 True  True  False13:00     2 False False False15:00     1 False False False16:00     1 True  True  False17:00     1 True  True  False我想對具有相同布爾值的行進行分組,但前提是它們已連接。結果應如下所示:Time  Hours col1  col2  col310:00     3 True  True  False13:00     3 False False False16:00     2 True  True  False有什么幫助嗎?
查看完整描述

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


查看完整回答
反對 回復 2023-05-23
?
至尊寶的傳說

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'))

```


查看完整回答
反對 回復 2023-05-23
  • 2 回答
  • 0 關注
  • 158 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號