Python Pandas按lurn_fls分组统计Comparision各类计数求助
Pandas分组统计解决方案
针对你的需求,这里提供两种高效的实现方式,适用于百万级行数据的处理:
方法一:使用pd.crosstab(简洁直观)
import pandas as pd # 假设你的DataFrame名为df # 生成交叉表,按lurn_fls分组统计各Comparision结果的数量 result = pd.crosstab(df['lurn_fls'], df['Comparision']) # 添加Total列,计算每组的总记录数 result['Total'] = result.sum(axis=1) # 将lurn_fls从索引转为普通列 result = result.reset_index()
方法二:使用groupby+value_counts(灵活扩展)
import pandas as pd # 分组后统计每个Comparision值的出现次数,转成宽表格式(空值填充为0) result = df.groupby('lurn_fls')['Comparision'].value_counts().unstack(fill_value=0) # 添加Total列 result['Total'] = result.sum(axis=1) # 重置索引 result = result.reset_index()
可选:仅保留指定的Comparision类别
如果只需要结果中的mbn:match both non-empty、xhe:mismatch h_empty、xne:mismatch neither empty这三类,可以添加列过滤步骤:
# 指定需要保留的列顺序 target_cols = [ 'mbn:match both non-empty', 'xhe:mismatch h_empty', 'xne:mismatch neither empty' ] # 重新排列列,确保顺序符合需求 result = result[['lurn_fls'] + target_cols + ['Total']]
两种方法都能高效处理百万行数据,最终输出结果与你要求的格式完全一致。
内容的提问来源于stack exchange,提问作者Ashu
相关产品推荐
相关产品推荐

