Pandas如何将groupby分组键转为带计数值的字典并提取值数组
Pandas分组计数转字典与数组提取方法
生成分组键对应计数的字典
你代码中已经通过groupby().size()得到了存储分组计数的group_size对象,这是一个Pandas Series结构,不需要手动遍历分组键拼接字典,直接调用内置方法即可完成转换:
import pandas as pd original_df = pd.read_csv('NewDatasetTotal4.csv') target_col = 'original_class' # 计算每个类别的样本数量,返回索引为类别名、值为对应计数的Series group_size = original_df.groupby(target_col).size() # 方式1:直接转成 类别名:计数 格式的字典,后续可直接遍历取值 class_count_dict = group_size.to_dict() # 方式2:如果需要你注释中提到的 xxx_size 格式的键名,用字典推导式处理即可 class_count_dict_renamed = {f"{class_name}_size": count for class_name, count in group_size.items()}
转换完成后直接遍历字典就能拿到每个键对应的计数值:
for k, v in class_count_dict.items(): print(f"类别 {k} 的样本数为 {v}")
注意事项:
- 你代码中
original_df = original_df.astype(str)这一步对分组计数没有实际作用,可以删掉避免不必要的性能消耗。- 你注释中写的
sheep_size = 2是手动标注的示例值,实际运行代码会按导入CSV的真实数据自动统计每个类别的计数,不需要手动给单个变量赋值。
提取计数值为列表/数组
要得到类似[5, 3, 7, 7, 2]格式的纯计数值集合,直接从group_size对象中提取值即可:
# 转成原生Python列表 count_list = list(group_size.values) # 如果需要numpy数组格式做后续数值计算,直接取.values属性即可 count_array = group_size.values
注意:Pandas的groupby默认会对分组键按字典序排序,输出的计数顺序和类别名的排序结果一一对应。
内容的提问来源于stack exchange,提问作者Joe
相关产品推荐
相关产品推荐

