如何按行统计DataFrame某列中唯一值的出现次数?
解决方案
实现思路
- 将
values列的逗号分隔字符串拆分为数值列表 - 逐行统计列表中0和1的出现次数,组合成指定格式的元组
- 保留
student number列并与统计结果关联,生成目标DataFrame
代码实现
import pandas as pd # 替换为你的实际DataFrame df = pd.DataFrame({ 'student number': [0, 1, 2, 3, 4], 'values': ['0,0,...,0,1,...,1', '0,...,0,1,...,1', '0,...,0,1,...,1', '0,...,0,1,...,1', '0,...,0,1,...,1'] }) # 定义统计函数 def count_zero_one(row): # 拆分字符串并转为整数列表 val_list = list(map(int, row['values'].split(','))) # 统计0和1的次数 zero_count = val_list.count(0) one_count = val_list.count(1) return (zero_count, one_count) # 生成统计结果列 df['vector'] = df.apply(count_zero_one, axis=1) # 整理输出格式 result = df.rename(columns={'student number': 'student'})[['student', 'vector']] print(result)
代码说明
split(','):将values列的字符串按逗号分割为字符串列表map(int, ...):将列表中的字符串元素转换为整数类型val_list.count(0)/val_list.count(1):分别统计0和1在当前行的出现次数apply(..., axis=1):按行调用统计函数,生成每行的统计元组- 最后通过重命名和列筛选得到目标格式的结果
输出示例
student vector 0 0 (15, 12) 1 1 (10, 11) 2 2 (8, 10) 3 3 (13, 6) 4 4 (9, 16)
内容的提问来源于stack exchange,提问作者Man.utd
相关产品推荐
相关产品推荐

