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

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

以每小時為間隔插入 15 分鐘的日期時間

以每小時為間隔插入 15 分鐘的日期時間

開滿天機 2022-11-29 17:10:45
我有一個包含 3 列的數據框,其中第一列是日期時間。看起來像這樣Datetime            Level1   Level22016-02-24 01:00    12       152016-02-24 02:00    14       132016-02-24 03:00    8        12現在我想在每小時值之間添加 15 分鐘的間隔值。但是,Level1 和 Level2 獲得的值與其前一小時相同。它應該是這樣的:Datetime            Level1   Level22016-02-24 01:00    12       152016-02-24 01:15    12       152016-02-24 01:30    12       152016-02-24 01:45    12       152016-02-24 02:00    14       132016-02-24 02:15    14       132016-02-24 02:30    14       132016-02-24 02:45    14       132016-02-24 03:00    8        122016-02-24 03:15    8        122016-02-24 03:30    8        122016-02-24 03:45    8        12我想不出如何正確執行此操作的方法。
查看完整描述

2 回答

?
慕娘9325324

TA貢獻1783條經驗 獲得超4個贊

將日期時間設置為索引(在轉換為日期時間之后),并使用帶有前向填充的 asfreq 方法用以前的值填充空值:


#thanks to @a_guest for the cleaned sample data


df = pd.DataFrame(

    data=[['2016-02-24 01:00', 12, 15],

          ['2016-02-24 02:00', 14, 13],

          ['2016-02-24 03:00',  8, 12]],

    columns=['Datetime', 'Level1', 'Level2']

)

df['Datetime'] = pd.to_datetime(df['Datetime'])


df = df.set_index('Datetime')


df.asfreq('15min',method='pad')


                 Level1 Level2

Datetime        

2016-02-24 01:00:00 12  15

2016-02-24 01:15:00 12  15

2016-02-24 01:30:00 12  15

2016-02-24 01:45:00 12  15

2016-02-24 02:00:00 14  13

2016-02-24 02:15:00 14  13

2016-02-24 02:30:00 14  13

2016-02-24 02:45:00 14  13

2016-02-24 03:00:00 8   12

注意:您的問題是時間間隔為 15 分鐘,您的最晚時間是下午 3 點,而不是數據中共享的下午 4 點。


查看完整回答
反對 回復 2022-11-29
?
有只小跳蛙

TA貢獻1824條經驗 獲得超8個贊

您可以創建原始數據框的副本,其中您Datetime每次將列遞增 15 分鐘,然后使用pd.concatfollowed bysort_values獲得最終結果:

from datetime import timedelta

import pandas as pd


df = pd.DataFrame(

    data=[['2016-02-24 01:00', 12, 15],

          ['2016-02-24 02:00', 14, 13],

          ['2016-02-24 03:00',  8, 12]],

    columns=['Datetime', 'Level1', 'Level2']

)

df['Datetime'] = pd.to_datetime(df['Datetime'])


intervals = [df]

while len(intervals) < 4:

    new = intervals[-1].copy()

    new['Datetime'] += timedelta(minutes=15)

    intervals.append(new)


result = pd.concat(intervals).sort_values(by='Datetime')


查看完整回答
反對 回復 2022-11-29
  • 2 回答
  • 0 關注
  • 118 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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