python - 以 15 分钟的时间间隔创建新列
问题描述
我有一个熊猫数据框 df ,如下所示。
Date Hour Minute Val
2017-03-01 0 0 126
2017-03-01 0 15 119
2017-03-01 0 30 110
2017-03-01 0 45 56
2017-03-01 1 0 70
2017-03-01 1 15 59
2017-03-01 1 30 50
2017-03-01 1 45 41
2017-03-01 2 0 56
2017-03-01 2 15 63
2017-03-01 2 30 53
2017-03-01 2 45 66
2017-03-01 3 0 64
2017-03-01 3 15 78
2017-03-01 3 30 81
2017-03-01 3 45 79
我必须每隔 15 分钟使用“Val”列的值填充新列。我想要的输出应该如下所示
Date Hour Minute Val T-30 T-15 T T15 T30 T45
2017-03-01 0 0 126 Na Na 126 119 110 56
2017-03-01 0 15 119 Na 126 119 110 56 70
2017-03-01 0 30 110 126 119 110 56 70 59
2017-03-01 0 45 56 119 110 56 70 59 50
2017-03-01 1 0 70 110 56 70 59 50 41
2017-03-01 1 15 59 56 70 59 50 41 56
2017-03-01 1 30 50 70 59 50 41 56 63
2017-03-01 1 45 41 59 50 41 56 63 53
2017-03-01 2 0 56 50 41 56 63 53 66
2017-03-01 2 15 63 41 56 63 53 66 64
2017-03-01 2 30 53 56 63 53 66 64 78
2017-03-01 2 45 66 63 53 66 64 78 81
2017-03-01 3 0 64 53 66 64 78 81 79
2017-03-01 3 15 78 66 64 78 81 79 Na
2017-03-01 3 30 81 64 78 81 79 Na Na
2017-03-01 3 45 79 78 81 79 Na Na Na
我尝试旋转我的原始数据框以实现所需的输出,但输出看起来不像上面提到的所需输出。
df = df.pivot_table(index=['Date','Hour'], columns='Minute', values='Val').reset_index()
df.columns = ['Date', 'hour', 'T', 'T15', 'T30', 'T45']
上述代码的输出如下所示。
Date hour T T15 T30 T45
2019-03-01 0 126 119 110 56
2019-03-01 1 70 59 50 41
2019-03-01 2 56 63 53 66
2019-03-01 3 64 78 81 79
我无法以某种方式旋转表格,保留分钟和值列并添加 T-15 和 T-30。
我该怎么做呢?我是 python 新手。任何建议都会很棒。提前致谢。
解决方案
你可以做shift
s=pd.concat([df.Val.shift(x) for x in l],axis=1,keys=['T'+str(-x*15)for x in l])
df=pd.concat([df,s],axis=1)
推荐阅读
- security - 我可以利用外部访问管理系统在 Amazon Elastic Search 中使用细粒度访问控制吗?
- c# - 登录到基于相同基本模板开发的系统时出现“防伪令牌意味着基于声明的用户与当前用户不同”的错误
- dart - 为什么我不能从 Flutter Web 中的响应标头中读出 cookie 而 chrome 可以?
- json - 来自 Nginx 服务器的截断响应
- php - 事件列表显示 - API 数据和自定义帖子类型数据合并 Wordpress
- spring - 如何使用spring集成在文件夹谷歌云存储中上传和下载文件
- php - 从另一个编辑 php 文件数组变量
- scala - gatling 和弹性:无效的基本身份验证标头编码
- oracle - PL SQL 新手,需要更新游标和 2 个表的帮助
- python - 银行系统的账户使用字典来存储它,但它只读取第一个账户