如何在Python中仅打印pandas groupby对象的特定组
在Python中仅打印pandas groupby对象的特定组
准备数据与分组对象
首先创建示例DataFrame并生成groupby对象:
import pandas as pd df = pd.DataFrame({'ID' : [1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4], 'Entry' : [1, 2, 3, 4, 1, 2, 3, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 6]}) grouped_by_unit = df.groupby(by="ID")
问题1:仅打印ID=1的分组
pandas的groupby对象支持像字典一样通过键直接获取对应分组,使用get_group()方法即可:
# 打印ID=1的分组 print(grouped_by_unit.get_group(1))
输出结果:
ID Entry 0 1 1 1 1 2 2 1 3 3 1 4
问题2:同时打印ID=1和ID=4的分组
有两种常用方式实现:
方式1:遍历指定ID逐个打印
适合需要分开展示每个分组的场景:
target_ids = [1, 4] for id_val in target_ids: print(f"\n=== ID={id_val} 的分组 ===") print(grouped_by_unit.get_group(id_val))
输出结果:
=== ID=1 的分组 === ID Entry 0 1 1 1 1 2 2 1 3 3 1 4 === ID=4 的分组 === ID Entry 12 4 1 13 4 2 14 4 3 15 4 4 16 4 5 17 4 6
方式2:筛选后打印合并结果
如果需要将多个分组合并为一个DataFrame打印,使用filter()方法:
# 筛选出ID为1和4的分组并打印 filtered_df = grouped_by_unit.filter(lambda x: x['ID'].iloc[0] in [1, 4]) print(filtered_df)
输出结果:
ID Entry 0 1 1 1 1 2 2 1 3 3 1 4 12 4 1 13 4 2 14 4 3 15 4 4 16 4 5 17 4 6
内容的提问来源于stack exchange,提问作者NN_Developer
相关产品推荐
相关产品推荐

