首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pandas中的Timeseries数据集到每小时要素数据集

Pandas中的Timeseries数据集到每小时要素数据集
EN

Stack Overflow用户
提问于 2019-02-22 17:00:30
回答 1查看 33关注 0票数 2

我有一个像这样的时间序列数据的pandas数据框架

代码语言:javascript
复制
            Timestamp       X
0   2016-12-01 00:00:00 0.186090
1   2016-12-01 00:10:00 0.203160
2   2016-12-01 00:20:00 0.216228
3   2016-12-01 00:30:00 0.220723
4   2016-12-01 00:40:00 0.263620
5   2016-12-01 00:50:00 0.287217
6   2016-12-01 01:00:00 0.282319
7   2016-12-01 01:10:00 0.242778
8   2016-12-01 01:20:00 0.235190
9   2016-12-01 01:30:00 0.210077
10  2016-12-01 01:40:00 0.251426
11  2016-12-01 01:50:00 0.238118
12  2016-12-01 02:00:00 0.262105
13  2016-12-01 02:10:00 0.270865
14  2016-12-01 02:20:00 0.281123
15  2016-12-01 02:30:00 0.276698
16  2016-12-01 02:40:00 0.296046
17  2016-12-01 02:50:00 0.308164
18  2016-12-01 03:00:00 0.313092
19  2016-12-01 03:10:00 0.233784

我想要将数据集转换为如下所示

代码语言:javascript
复制
Date          F1     F2        F3        F4      F5        F6       .... F145
2016-12-01 0.186090  0.203160  0.216228  0.20723 0.263620  0.287217 .........
2016-12-02 ..................................................................

也就是说,我想制作另一个有145列的数据帧,每列表示一天中的一个特定时间块。F1表示00:00:00F2表示00:10:00 .F144表示23:50:00F155表示第二天的00:00:00

在熊猫身上实现这一点的最有效的方法是什么?

可以对这些类型的任务进行透视,但是如何使用带有时间戳列的透视。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-22 17:06:09

首先按floor删除时间-获取datetimesdate -获取python对象日期,按timepivot创建列

代码语言:javascript
复制
df['Timestamp'] = pd.to_datetime(df['Timestamp']) 
df['Date'] = df['Timestamp'].dt.floor('D')
df['Hours'] = df['Timestamp'].dt.time

df = df.pivot('Date','Hours','X')
print (df)
Hours       00:00:00  00:10:00  00:20:00  00:30:00  00:40:00  00:50:00  \
Date                                                                     
2016-12-01   0.18609   0.20316  0.216228  0.220723   0.26362  0.287217   

Hours       01:00:00  01:10:00  01:20:00  01:30:00  01:40:00  01:50:00  \
Date                                                                     
2016-12-01  0.282319  0.242778   0.23519  0.210077  0.251426  0.238118   

Hours       02:00:00  02:10:00  02:20:00  02:30:00  02:40:00  02:50:00  \
Date                                                                     
2016-12-01  0.262105  0.270865  0.281123  0.276698  0.296046  0.308164   

Hours       03:00:00  03:10:00  
Date                            
2016-12-01  0.313092  0.233784 

最后将列转换为计数器,并将Date设置为列:

代码语言:javascript
复制
df.columns = [f'F{x+1}' for x in range(len(df.columns))]
df = df.reset_index().rename_axis(None, axis=1)
print (df)
        Date       F1       F2        F3        F4       F5        F6  \
0 2016-12-01  0.18609  0.20316  0.216228  0.220723  0.26362  0.287217   

         F7        F8       F9  ...       F11       F12       F13       F14  \
0  0.282319  0.242778  0.23519  ...  0.251426  0.238118  0.262105  0.270865   

        F15       F16       F17       F18       F19       F20  
0  0.281123  0.276698  0.296046  0.308164  0.313092  0.233784  

[1 rows x 21 columns]

最后使用shift作为最后一列:

代码语言:javascript
复制
df['F145'] = df['F1'].shift(-1)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54823409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档