python - 如何将 Pandas DataFrame 日期索引从每日更改为每小时
问题描述
我有一个带有每天粒度的日期时间索引的熊猫数据框,我想在一天中的每个小时重复每一行,以便我的数据框现在每小时粒度。
从
2010-01-01 | 150
2010-01-02 | 200
至
2010-01-01 00:00:00 | 150
2010-01-01 01:00:00 | 150
2010-01-01 02:00:00 | 150
.
.
.
2010-01-01 23:00:00 | 150
2010-01-02 00:00:00 | 200
2010-01-02 01:00:00 | 200
.
.
.
2010-01-02 23:00:00 | 200
解决方案
DatetimeIndex
必要时先创建:
df['date'] = pd.to_datetime(df['date'])
df = df.set_index('date')
创建所有可能的小时日期时间date_range
,然后使用DataFrame.reindex
:
rng = pd.date_range(df.index.min(), df.index.max() + pd.Timedelta(23, 'H'), freq='H')
df2 = df.reindex(rng, method='ffill')
print (df2)
A
2010-01-01 00:00:00 150
2010-01-01 01:00:00 150
2010-01-01 02:00:00 150
2010-01-01 03:00:00 150
2010-01-01 04:00:00 150
2010-01-01 05:00:00 150
2010-01-01 06:00:00 150
2010-01-01 07:00:00 150
2010-01-01 08:00:00 150
2010-01-01 09:00:00 150
2010-01-01 10:00:00 150
2010-01-01 11:00:00 150
2010-01-01 12:00:00 150
2010-01-01 13:00:00 150
2010-01-01 14:00:00 150
2010-01-01 15:00:00 150
2010-01-01 16:00:00 150
2010-01-01 17:00:00 150
2010-01-01 18:00:00 150
2010-01-01 19:00:00 150
2010-01-01 20:00:00 150
2010-01-01 21:00:00 150
2010-01-01 22:00:00 150
2010-01-01 23:00:00 150
2010-01-02 00:00:00 200
2010-01-02 01:00:00 200
2010-01-02 02:00:00 200
2010-01-02 03:00:00 200
2010-01-02 04:00:00 200
2010-01-02 05:00:00 200
2010-01-02 06:00:00 200
2010-01-02 07:00:00 200
2010-01-02 08:00:00 200
2010-01-02 09:00:00 200
2010-01-02 10:00:00 200
2010-01-02 11:00:00 200
2010-01-02 12:00:00 200
2010-01-02 13:00:00 200
2010-01-02 14:00:00 200
2010-01-02 15:00:00 200
2010-01-02 16:00:00 200
2010-01-02 17:00:00 200
2010-01-02 18:00:00 200
2010-01-02 19:00:00 200
2010-01-02 20:00:00 200
2010-01-02 21:00:00 200
2010-01-02 22:00:00 200
2010-01-02 23:00:00 200
推荐阅读
- android - Gradle:DSL 元素“useProguard”已过时,将很快被删除
- ios - 使用 CoreBluetooth CBL2CAPChannel 移动数据
- java - 如何单击具有输入类型和值的按钮?
- jquery - 如何使用jQuery ajax 重新加载用户不知道的页面是正在重新加载的页面?
- html - CSS样式表第一次没有链接到HTML web-dev
- android - 使用改造(pdf,ppt,png,jpg)“code = 500,内部服务器错误”上传文件有什么问题
- android - 如何绑定具有多个 IN 值的 SQL 语句?
- android - 如何使用导航视图
- c# - Net Core:用于数据检查的私有成员和数据注释之间的区别
- razorpay - 如何通过razorpay api取消特定用户(最终用户)的订阅