如何访问pandas groupby分组获取单个分组的DataFrame对象
正确实现方案
你原有遍历代码的核心问题是:迭代DataFrameGroupBy对象时,每一轮返回的是**(分组键, 分组对应子DataFrame)** 的二元元组,而非单个分组对象,也不存在toDataFrame()这类转换方法。
你原本的按天分组逻辑完全正确,不需要修改,只需要调整遍历的接收逻辑即可,不需要做聚合操作也能正常拆分出每个天的独立子表。
可直接运行的代码
# 原有分组逻辑保持不变 grouping = df.groupby(pd.Grouper(level="timestamp", freq="D")) # 修正后的遍历逻辑 for date_key, daily_df in grouping: # daily_df 就是对应日期下、保留原10分钟频率时间戳索引的独立DataFrame # 直接传入你的处理函数即可 some_processing(daily_df)
额外实用技巧
- 如果需要直接获取指定某一天的分组数据,不需要遍历全部分组,调用
get_group()方法即可:# 例如获取2024年6月1日的子DataFrame target_df = grouping.get_group(pd.Timestamp("2024-06-01")) groupby本身是惰性计算的,执行分组语句时不会立刻把所有子表加载到内存,只有遍历或者调用取数组方法时才会生成对应子DataFrame,处理你提到的数周跨度10分钟粒度数据时内存占用很低。- 如果你需要把所有分组的子DataFrame一次性存成列表,可以直接写
all_daily_groups = [g for _, g in grouping],列表里的每个元素就是按天拆分的独立DataFrame。
内容的提问来源于stack exchange,提问作者Ulrich Schuster
相关产品推荐
相关产品推荐

