python - pandas:转换天数和小时数
问题描述
我有以下数据框:
df.head()
Out[195]:
day hour power_kW
0 24 1 0.38180
1 24 2 0.17802
2 24 3 0.22356
3 24 4 0.17710
4 24 5 0.19389
其中day栏代表天数:24对应1月24日(年份为2013年),151对应5月31日。
数据框中的每一天都有 24 小时,对应于功率的测量值。
我想获得一个包含年、日、月和小时的日期时间列。为此,我运行以下命令:
df['date'] = pd.to_datetime(df['day']-1,errors='ignore', unit='d',origin='2013-01')
数据框变成这样:
df2.head()
Out[197]:
day hour power_kW date
0 24 1 0.38180 2013-01-24 00:00:00
1 24 2 0.17802 2013-01-24 00:00:00
2 24 3 0.22356 2013-01-24 00:00:00
3 24 4 0.17710 2013-01-24 00:00:00
4 24 5 0.19389 2013-01-24 00:00:00
我想将信息“小时”添加到“日期”列。我不想按 1h 步长的时间范围生成日期列,因为可能会丢失数据。
是否有可能在pd.to_datetime
指令中做到这一点?
提前致谢。
解决方案
从您已经创建的列开始,使用带有以下date
内容的熊猫:timedelta
unit='h'
df['date'] = df['date'] + pd.to_timedelta(df['hour'], unit='h')
>>> df
day hour power_kW date
0 24 1 0.38180 2013-01-24 01:00:00
1 24 2 0.17802 2013-01-24 02:00:00
2 24 3 0.22356 2013-01-24 03:00:00
3 24 4 0.17710 2013-01-24 04:00:00
4 24 5 0.19389 2013-01-24 05:00:00
您也可以从原始数据框开始从头开始执行此操作:
df['date'] = (pd.to_datetime(df['day']-1,errors='ignore',
unit='d',origin='2013-01') +
pd.to_timedelta(df['hour'], unit='h'))
推荐阅读
- reactjs - 如何在反应原生轮播横幅中修复“活动页面指示器样式的索引不正确”
- mongodb - 使用 Query 或 Agreegation 仅获取嵌入文档效果不佳
- android - 如何在不跳过布局的情况下为内部 RecyclerView 项目设置适配器?
- javascript - 开玩笑 - 如何测试调用了 console.error ?
- python - 按性别拆分名单
- python - 如何在想要的文档之前遍历文件夹?
- php - 如何修复“Wordpress”wp-admin/includes/file.php“错误代码 - 500
- python-3.x - 无法使用 sqlalchemy 访问 Oracle 数据库
- python - 如何在表单管理员中添加十字以使用 django 添加对象
- javascript - 使用inv数据属性和javascript为类中的链接设置操作