Python 时间序列数据重采样

Python 时间序列数据重采样,python,pandas,Python,Pandas,我有一些随机的每小时时间序列数据,(让我们做一些补充)我如何为每日最大值重新采样,以及为记录的每日最大值的小时创建单独的df列 import pandas as pd import numpy as np from numpy.random import randint import os np.random.seed(10) # added for reproductibility

我有一些随机的每小时时间序列数据,(让我们做一些补充)我如何为每日最大值重新采样,以及为记录的每日最大值的小时创建单独的df列

import pandas as pd 
import numpy as np 
from numpy.random import randint
import os

np.random.seed(10)  # added for reproductibility                                                                                                                                                                 

rng = pd.date_range('10/9/2018 00:00', periods=1000, freq='1H') 
df = pd.DataFrame({'Random_Number':randint(1, 100, 1000)}, index=rng)

df.index.name = 'Date'
对随机值重新采样:

daily_summary = pd.DataFrame()

daily_summary['Random_Number_Resamp'] = df['Random_Number'].resample('D').max()


daily_summary.head()
然后尝试记录每天最大值发生的时间

daily_summary['Hour_Map'] = daily_summary.Random_Number_Resamp.index.strftime('%H').astype('int')

daily_summary

上面的代码不会抛出属性错误,但是
hour\u map
将为零。。当创建了
每日摘要
df时,我该如何实现这一步骤中也会出现小时图?

我想我了解您在寻找什么

只需在原始df中创建一个小时列,然后重新采样:

np.random.seed(10)  # added for reproductibility                                                                                                                                                                 

rng = pd.date_range('10/9/2018 00:00', periods=1000, freq='1H') 
df = pd.DataFrame({'Random_Number':randint(1, 100, 1000)}, index=rng)

df.index.name = 'Date'

# create hour column
df['hour'] = df.index.hour

# resample df
daily_summary = df.resample('D').max()

            Random_Number  hour
Date                           
2018-10-09             94    23
2018-10-10             95    23
2018-10-11             97    23
2018-10-12             98    23
2018-10-13             91    23

您可以执行
groupby

df.groupby(df.index.normalize())['Random_Number'].agg(['idxmax', 'max']) 
输出(总人数):


谢谢你的提示。。。正常化是做什么的?我还需要研究聚合的作用,它会一直截断到00:00:00。此处的聚合仅应用组上的每个函数。当然,它可以做得更多。是否可以将
idxmax
max列更改为仅将小时表示为整数?
new_df['hour']=new_df['idxmax'].dt.hour
?出于某种原因,这会给我一个键错误
keyrerror:'idxmax'
                         idxmax     max
Date        
2018-10-09  2018-10-09 05:00:00     94
2018-10-10  2018-10-10 20:00:00     95
2018-10-11  2018-10-11 15:00:00     97
2018-10-12  2018-10-12 18:00:00     98
2018-10-13  2018-10-13 22:00:00     91