将日期时间列按天划分为小时

时间:2019-10-21 10:59:55

标签: python pandas

如何将以下数据框归为一组(在日期列中以小时为单位)

import pandas as pd
import numpy as np
np.random.seed(42)
date_rng = pd.date_range(start='1/1/2018', end='1/03/2018', freq='H')
df = pd.DataFrame(date_rng, columns=['date'])
df['data'] = np.random.randint(0,100,size=(len(date_rng)))
print(df.head())
                 date  data
0 2018-01-01 00:00:00    51
1 2018-01-01 01:00:00    92
2 2018-01-01 02:00:00    14
3 2018-01-01 03:00:00    71
4 2018-01-01 04:00:00    60

每天计算每天的最小值和最大值?

1 个答案:

答案 0 :(得分:0)

使用DataFrame.resample

print(df.resample('d', on='date')['data'].agg(['min','max']))
            min  max
date                
2018-01-01    1   99
2018-01-02    2   91
2018-01-03   72   72

您还可以指定列名称:

df1 = df.resample('d', on='date')['data'].agg([('min_data', 'min'),('max_data','max')])
print (df1)
            min_data  max_data
date                          
2018-01-01         1        99
2018-01-02         2        91
2018-01-03        72        72

使用Grouper的另一种解决方案:

df1 = (df.groupby(pd.Grouper(freq='d', key='date'))['data']
         .agg([('min_data', 'min'),('max_data','max')]))