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

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

Dataframe Groupby 和 Resample,每分鐘添加缺失行

Dataframe Groupby 和 Resample,每分鐘添加缺失行

紫衣仙女 2023-12-12 20:11:40
我想要一個簡短的數據框:每分鐘安排一次添加缺失分鐘數的行(從 09:05 到 09:20)然后每 5 分鐘重新采樣一次time  cars     flow 0  9:07   737       In 1  9:06    22      Out 2  9:18    42       In 3  9:19    36  Unknown我嘗試過的:data = {'time': ["9:07", "9:06", "9:18", "9:19"], 'cars' : [737,  22, 42,36],'flow': ["In","Out","In","Unknown"]}df = pd.DataFrame(data)idx = pd.date_range("9:05", "09:20", freq="1min")idx = idx.rename('time')df = df.set_index('time')df.index = pd.to_datetime(df.index)df = df.reindex(idx, fill_value=0)df = df.groupby('flow').resample('5T')['cars'].sum()     # how_many_volumeprint(df)它返回:flow     time               0        2020-10-21 09:05:00      0         2020-10-21 09:10:00      0         2020-10-21 09:15:00      0         2020-10-21 09:20:00      0In       2020-10-21 09:05:00    737         2020-10-21 09:10:00      0         2020-10-21 09:15:00     42Out      2020-10-21 09:05:00     22Unknown  2020-10-21 09:15:00     36但想要的是:In             2020-10-21 09:05:00    737               2020-10-21 09:10:00    0               2020-10-21 09:15:00    42               2020-10-21 09:20:00    0Out            2020-10-21 09:05:00    22               2020-10-21 09:10:00    0               2020-10-21 09:15:00    0               2020-10-21 09:20:00    0Unknown        2020-10-21 09:05:00    0               2020-10-21 09:10:00    0               2020-10-21 09:15:00    36               2020-10-21 09:20:00    0有什么方法可以實現呢?
查看完整描述

1 回答

?
撒科打諢

TA貢獻1934條經驗 獲得超2個贊

df2 = df.pivot(columns='flow').resample('5T').sum().stack()

df2.index = df2.index.swaplevel(0, 1)

>>> df2.sort_index()

                              cars

flow    time                      

In      2020-10-20 09:05:00  737.0

        2020-10-20 09:10:00    0.0

        2020-10-20 09:15:00   42.0

Out     2020-10-20 09:05:00   22.0

        2020-10-20 09:10:00    0.0

        2020-10-20 09:15:00    0.0

Unknown 2020-10-20 09:05:00    0.0

        2020-10-20 09:10:00    0.0

        2020-10-20 09:15:00   36.0

我個人會將數據保留為表格形式:


>>> df.pivot(columns='flow').resample('5T').sum()

                      cars              

flow                    In   Out Unknown

time                                    

2020-10-20 09:05:00  737.0  22.0     0.0

2020-10-20 09:10:00    0.0   0.0     0.0

2020-10-20 09:15:00   42.0   0.0    36.0


查看完整回答
反對 回復 2023-12-12
  • 1 回答
  • 0 關注
  • 165 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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