【问题标题】:Pandas Group by index Hour and keeping observation for each hourPandas 按索引小时分组并保持每小时观察
【发布时间】:2019-10-31 02:14:57
【问题描述】:
我有一个包含一列和一个日期时间索引的 pandas 数据框,我需要按小时对数据进行分组,并为每个按小时分组的每个观察值(记录)保留,以下方法允许对数据进行分组:
data= data.groupby(data.index.hour).max()
问题是以前的方法允许使用聚合器(最大值、平均值或最小值)进行分组,而我需要保留每个观察值。
【问题讨论】:
标签:
python-3.x
pandas
dataframe
group-by
【解决方案1】:
如果您按小时分组,那么您只会获得 24 条唯一记录,一天中的每个小时记录一条,而不是跨天的数据。
如果您的目的是汇总每小时发生的多个观察结果并随着时间的推移查看它们,您将需要使用 pandas.Grouper 类。
在任何一种情况下,您都可以申请 list 以单独保留每个组内的所有观察结果,而不是汇总。
注意:您需要将“data_col”替换为 DF 中包含观察结果的数据列的名称
按小时数分组
data = data.groupby(data.index.hour)["data_col"].apply(list)
按时间顺序分组
time_grouper = pd.Grouper(freq="1h")
data = data.groupby(time_grouper)["data_col"].apply(list)