将10分钟间隔数据汇总到每小时

时间:2019-08-18 07:54:31

标签: python pandas datetime-format data-cleaning

我有一个以10分钟为间隔的温度和湿度读数的df,例如:

Time                   
1/2/2017 13:00
1/2/2017 13:10
1/2/2017 13:20
1/2/2017 13:30
1/2/2017 13:40
1/2/2017 13:50
1/2/2017 14:00
1/2/2017 14:10
1/2/2017 14:20

我想通过在一小时内取平均值来将df转换为每小时:

Time
1/2/2017 13:00
1/2/2017 14:00

转换为日期时间后,我尝试了groupby:

times = pd.to_datetime(df.Time)
df.groupby([times.hour, times.minute])

我得到了错误:AttributeError: 'Series' object has no attribute 'hour'

我尝试了

df.groupby(pd.DatetimeIndex(df['Time']).hour).mean()

但这会根据一天中的24小时对所有内容进行分组。

2 个答案:

答案 0 :(得分:0)

您可以按照以下步骤进行操作:

import pandas as pd
import numpy as np

dates = ['1/2/2017 13:00', '1/2/2017 13:10', '1/2/2017 13:20', 
         '1/2/2017 13:30', '1/2/2017 13:40', '1/2/2017 13:50',
         '1/2/2017 14:00', '1/2/2017 14:10', '1/2/2017 14:20']

numbers = np.random.randint(0, 11, 9)

df = pd.DataFrame(numbers, index=dates)

df
  

2017年1月2日13:00 5
  2017年1月2日13:10 8
  2017/1/23 13:20 10
  2017年1月2日13:30 1
  2017/1/23 13:40 6
  2017/1/23 13:50 7
  2017年1月2日14:00 10
  2017/1/2 14:10 7
  2017/1/2 14:20 8

times = pd.to_datetime(df.index)
df.groupby(times.hour).mean()
  

13 6.166667
  14 8.333333

此处13和14表示每小时总计,即平均值13h,平均值14h。

答案 1 :(得分:0)

这非常有效: df.resample('60T')。mean()