我有一个熊猫数据框,其中包含一列和一个日期时间索引,我需要按小时对数据进行分组,并按小时对每个分组的每个观察值(记录)进行保存,以下方法可以对数据进行分组:
data= data.groupby(data.index.hour).max()
问题在于,前一种方法允许使用聚合器(最大值,平均值或最小值)进行分组,而我需要保留每个观察值。
答案 0 :(得分:2)
如果按小时分组,那么您将仅获得24条唯一记录,一天中每小时记录一次,而不是数据中每一天的记录。
如果您打算汇总每小时出现的多个观察值并随时间推移进行查看,则需要使用pandas.Grouper类。
在任何一种情况下,您都可以应用list
来将每个观测值单独保留在每个组中,而不是进行汇总。
注意:您需要用DF中包含观测值的数据列的名称替换“ data_col”
分组到小时数
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)