我有一個不連續日期的串列。我正在將這些讀取到資料框中,并希望將這些日期轉換為每小時級別。
我所有的搜索都導致了重新采樣。我設法將日期列轉換為 DateTimeIndex 并重新采樣,但是從第一個日期到最后一個日期每隔一小時填充一次,我一次只尋找 24 小時。
d = {'date': ["1/1/2014", "5/26/2014", "7/4/2014"]}
df = pd.DataFrame(data = d)
df['date'] = pd.to_datetime(df['date'])
df['date'] = df['date'].dt.tz_localize('US/Eastern')
df = df.set_index('date')
df = df.resample('H').ffill()
這將創建一個資料框,其索引包含從 2014 年 1 月 1 日到 2014 年 7 月 4 日的每(4416 個)小時
我真正想要的是有一個看起來像這樣的資料框:
date
2014-01-01 00:00:00-05:00
2014-01-01 01:00:00-05:00
2014-01-01 02:00:00-05:00
2014-01-01 03:00:00-05:00
2014-01-01 04:00:00-05:00
2014-01-01 05:00:00-05:00
2014-01-01 06:00:00-05:00
2014-01-01 07:00:00-05:00
2014-01-01 08:00:00-05:00
2014-01-01 09:00:00-05:00
2014-01-01 10:00:00-05:00
2014-01-01 11:00:00-05:00
2014-01-01 12:00:00-05:00
2014-01-01 13:00:00-05:00
2014-01-01 14:00:00-05:00
2014-01-01 15:00:00-05:00
2014-01-01 16:00:00-05:00
2014-01-01 17:00:00-05:00
2014-01-01 18:00:00-05:00
2014-01-01 19:00:00-05:00
2014-01-01 20:00:00-05:00
2014-01-01 21:00:00-05:00
2014-01-01 22:00:00-05:00
2014-01-01 23:00:00-05:00
2014-05-26 00:00:00-04:00
2014-05-26 01:00:00-04:00
2014-05-26 02:00:00-04:00
2014-05-26 03:00:00-04:00
2014-05-26 04:00:00-04:00
2014-05-26 05:00:00-04:00
2014-05-26 06:00:00-04:00
2014-05-26 07:00:00-04:00
2014-05-26 08:00:00-04:00
2014-05-26 09:00:00-04:00
2014-05-26 10:00:00-04:00
2014-05-26 11:00:00-04:00
2014-05-26 12:00:00-04:00
2014-05-26 13:00:00-04:00
2014-05-26 14:00:00-04:00
2014-05-26 15:00:00-04:00
2014-05-26 16:00:00-04:00
2014-05-26 17:00:00-04:00
2014-05-26 18:00:00-04:00
2014-05-26 19:00:00-04:00
2014-05-26 20:00:00-04:00
2014-05-26 21:00:00-04:00
2014-05-26 22:00:00-04:00
2014-05-26 23:00:00-04:00
然后再次跳到 7/4,僅包括該日期的 24 小時。
uj5u.com熱心網友回復:
不要重新采樣,而是為每個日期創建一個頻率為date的日期范圍,然后將它們全部分解:date 24h1H
hours = df['date'].apply(lambda x: pd.date_range(x, x pd.tseries.offsets.Hour(23), freq='1H')).explode()
輸出:
>>> hours
0 2014-01-01 00:00:00-05:00
0 2014-01-01 01:00:00-05:00
0 2014-01-01 02:00:00-05:00
0 2014-01-01 03:00:00-05:00
0 2014-01-01 04:00:00-05:00
...
2 2014-07-04 19:00:00-04:00
2 2014-07-04 20:00:00-04:00
2 2014-07-04 21:00:00-04:00
2 2014-07-04 22:00:00-04:00
2 2014-07-04 23:00:00-04:00
Name: date, Length: 72, dtype: datetime64[ns, US/Eastern]
uj5u.com熱心網友回復:
如果我理解你,我認為使用的好東西pd.date_range來自 pandas 包。您可以在第一次約會時這樣做并將其連接起來以實作其他約會(您可以使用回圈來實作)。
pd.date_range(start='1/1/2014', end = '2/1/2014', freq='1H')
uj5u.com熱心網友回復:
hours = df.apply(lambda df_: df_['date'] pd.to_timedelta(range(24), unit='H'), axis=1).explode()
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/487166.html
下一篇:如何將日期時間物件除以int
