我可以使用pandas将包含每小时观察的行转换为每日行的列吗?

时间:2018-05-09 10:32:57

标签: python pandas

我有一个大熊猫系列,每小时观察一个指标。我想把它变成一个系列,每天观察每天观察行有24小时列。

举个例子,我想转换

                 value

2018-05-12 12:00 45
2018-05-12 13:00 46
2018-05-12 14:00 47

           value_12 value_13 value_14
2018-05-12 45       46       47

有没有一种简单的方法可以在pandas中使用内置方法实现这一目标?

1 个答案:

答案 0 :(得分:3)

假设您从

开始
df = pd.DataFrame({'value': [45, 46, 47]}, index=['2018-05-12 12:00', '2018-05-12 13:00', '2018-05-12 14:00'])

然后你可以提取日期和时间:

df['date'] = pd.to_datetime(df.index).date
df['hour'] = pd.to_datetime(df.index).hour

现在只按日期分组,并创建一个系列:

>>> df.groupby([df.date]).apply(lambda g: pd.Series(g.value.values, index='value_' + g.hour.astype(str)))
hour    value_12    value_13    value_14
date            
2018-05-12  45  46  47