将时间序列数据透视到每小时视图中,每一天为一列,包括每一天的名称

时间:2019-06-07 11:08:20

标签: python dataframe pandas-groupby

我想将时间序列数据透视成一个小时视图,每一天都是一列,包括每一天的名称。

我有一个熊猫数据框df,它由3个参数(A,B,C)组成,每5分钟测量一个月(30天)。形状为(8640,3)。从月初到月末,每一列均以“%Y /%m /%d%H:%M:%S”格式表示整个月的一个参数,索引为时间戳。 >

现在,我想更改/旋转该df,以便我有3个字典(每个测量一个),其中小时和分钟的索引分别是“%H:%M:%S”和每一天(30)作为列。本质上,将形状更改为3个字典,每个字典(288,30)。最后一个要求是,列的名称是星期几,而不是数字,以便我确定星期几还是周末。

以下是我到目前为止为获得3格(288,30)的形状所做的尝试。


import numpy as np
import pandas as pd

df = pd.DataFrame(np.random.randint(0,100,size=(8640, 3)),index=pd.date_range(start="20180301", freq='5T',periods=8640),columns=['A','B','C'])

df_all_days={}
df_all_days_exp={}

for column in list(df):
    df_all_days[column]=df.groupby(df.index.time)[column].aggregate(lambda x:list(x))
    df_all_days_exp[column]=df_all_days[column].apply(pd.Series)

尽管df_all_days_exp为我提供了所需的结构,但30列用数字命名,而不是日期名称。我该如何映射,以便以日期(星期一,星期二等)命名列?

0 个答案:

没有答案