python - 重新采样时间序列数据

标签 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                                                                                                                                                                 

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_map 将为零。当创建 daily_summary df 时,如何实现 hour_map 也出现在此步骤?

最佳答案

你可以做groupby:

df.groupby(df.index.normalize())['Random_Number'].agg(['idxmax', 'max']) 

输出(头):

                         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

关于python - 重新采样时间序列数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60493969/

相关文章:

python - 我的变量在函数中不会改变

python - 如何删除 pygbutton 创建的按钮

使任意字符串成为有效文件名的Python函数

python - 有效地序列化 JSON 对象

python - 每个客户数据的回归

python - 基于 Pandas 数据框中列值的顶部底部配对

python - 数据框中的百分位排名。 Pandas

python - Pandas 不一致的日期时间格式

python - 从 pyodbc 调用过程时出错

python - 在 Seaborn 中设置绘图背景颜色