Python Pandas-从datetime索引创建新列

Python Pandas-从datetime索引创建新列,python,pandas,dataframe,datetime,Python,Pandas,Dataframe,Datetime,我有以下一系列小时数据: timestamp 2021-01-04 00:00:00 32896.2200 2021-01-04 01:00:00 33229.4000 2021-01-04 02:00:00 33508.7800 2021-01-04 03:00:00 33611.6000 2021-01-04 04:00:00 33345.2500 ... 2021-04-23 19:00:00 50963.6

我有以下一系列小时数据:

timestamp
2021-01-04 00:00:00   32896.2200
2021-01-04 01:00:00   33229.4000
2021-01-04 02:00:00   33508.7800
2021-01-04 03:00:00   33611.6000
2021-01-04 04:00:00   33345.2500
                         ...    
2021-04-23 19:00:00   50963.6000
2021-04-23 20:00:00   50563.0000
2021-04-23 21:00:00   50361.3700
2021-04-23 22:00:00   50524.4600
2021-04-23 23:00:00   51187.2700

我想创建一个dataframe,它将每周作为一个单独的列,包含168行(24小时*每周7天)。最理想的方法是什么?

我建议使用
dt.isocalendar().week
创建一个额外的列
week
,然后创建一个以week为列的透视表。唯一的问题是如何处理时间戳,我可以想象您希望将它们作为索引。解决方案是将时间戳按
dt.dayofweek
dt.hour
分割,并将其用作索引:

import pandas as pd
data = [ { "timestamp": "2021-01-04 00:00:00", "value": 32896.22 }, { "timestamp": "2021-01-04 01:00:00", "value": 33229.4 }, { "timestamp": "2021-01-04 02:00:00", "value": 33508.78 }, { "timestamp": "2021-01-04 03:00:00", "value": 33611.6 }, { "timestamp": "2021-01-04 04:00:00", "value": 33345.25 }, { "timestamp": "2021-04-23 19:00:00", "value": 50963.6 }, { "timestamp": "2021-04-23 20:00:00", "value": 50563 }, { "timestamp": "2021-04-23 21:00:00", "value": 50361.37 }, { "timestamp": "2021-04-23 22:00:00", "value": 50524.46 }, { "timestamp": "2021-04-23 23:00:00", "value": 51187.27 } ]
df= pd.DataFrame(data)
df['timestamp'] = pd.to_datetime(df['timestamp'])
df['week'] = df['timestamp'].dt.isocalendar().week
df["day_of_week"] = df["timestamp"].dt.dayofweek
df["hour"] = df["timestamp"].dt.hour
final_df = pd.pivot_table(df, values='value', index=['day_of_week', 'hour'], columns=['week'])
这将导致:

1. 16 (0, 0) 32896.2 楠 (0, 1) 33229.4 楠 (0, 2) 33508.8 楠 (0, 3) 33611.6 楠 (0, 4) 33345.2 楠 (4, 19) 楠 50963.6 (4, 20) 楠 50563 (4, 21) 楠 50361.4 (4, 22) 楠 50524.5 (4, 23) 楠 51187.3