如何在使用groupby操作时自动去除分组列?
在Pandas GroupBy中移除分组列的方法
在Pandas里,原生没有直接的GroupBy参数能让遍历得到的子DataFrame自动剔除分组列,不过有两种简洁的原生操作组合方式可以实现你要的效果:
方法1:遍历过程中手动移除分组列
这是最直接的做法,在遍历GroupBy对象时,对每个子DataFrame删除分组列即可:
import pandas as pd # 构造示例数据 df = pd.DataFrame({ "dt": ["2023-01-01", "2023-01-01", "2023-01-02", "2023-01-02"], "values": [10, 20, 30, 40] }) groups = df.groupby("dt") for start_dt, sub_df in groups: # 移除dt列 sub_df = sub_df.drop("dt", axis=1) print(f"分组键: {start_dt}") print(sub_df)
方法2:先移除分组列再按分组键分组
如果你希望从根源上让GroupBy返回的子DataFrame不带分组列,可以提前从原DataFrame中删除分组列,再用单独提取的分组键进行分组:
# 提取分组键 group_keys = df["dt"] # 删除原DataFrame中的dt列,再按group_keys分组 groups = df.drop("dt", axis=1).groupby(group_keys) for start_dt, sub_df in groups: print(f"分组键: {start_dt}") print(sub_df)
第一种适合仅在遍历临时处理的场景,第二种适合后续所有子DataFrame都不需要分组列的场景,两种方式都完全基于Pandas原生操作实现。
内容的提问来源于stack exchange,提问作者24n8
相关产品推荐
相关产品推荐

