gpt4 book ai didi

python - Pandas 中的时间序列数据集到每小时特征数据集

转载 作者:太空宇宙 更新时间:2023-11-04 04:19:12 25 4
gpt4 key购买 nike

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

            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

我想把数据集转换成这样

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 列的数据框,每列表示一天中的特定时间 block 。 F1表示00:00:00F2表示00:10:00 ..... F144表示23:50:00F155表示第二天的00:00:00

在 pandas 中实现这一目标的最有效方法是什么?

可以为这些类型的任务完成数据透视,但是如何将数据透视与时间戳列一起使用?

最佳答案

首先删除次数为floor - 获取 datetimesdate - 获取 python 对象日期,通过 time 创建列和 pivot :

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

最后将列转换为 Counter 并将 Date 设置为列:

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最后一列:

df['F145'] = df['F1'].shift(-1)

关于python - Pandas 中的时间序列数据集到每小时特征数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54823409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com