You need to enable JavaScript to run this app. Python Pandas 统计数据框内两类列的数字出现次数
优惠活动
大模型
产品
解决方案
定价
更多

Python Pandas 统计数据框内两类列的数字出现次数

可直接落地的Pandas实现代码

前置说明

假设你已经通过pd.read_csv()把目标CSV文件加载为DataFrame,存储在变量df中,无需额外调整原数据结构。

完整实现代码

import pandas as pd

# 1. 精准拆分两类目标列,避免列名匹配干扰
# 筛选普通ball列:严格匹配以ball_为前缀、后接数字的列,排除extraball列
ball_cols = df.filter(regex=r'^ball_\d+$').columns
# 筛选extraball列:直接匹配以extraball_为前缀的列
extra_cols = df.filter(like='extraball_').columns

# 2. 生成普通球(1-50范围)统计结果
# 把所有普通球列的值拉平为一维序列后统计频次
ball_freq = pd.Series(df[ball_cols].values.ravel()).value_counts()
# 对齐1-50全数字范围,未出现的数字频次填0
ball_stat_df = ball_freq.reindex(range(1, 51), fill_value=0).reset_index()
# 重命名列名匹配要求的输出结构
ball_stat_df.columns = ['Number', 'Score']

# 3. 生成特别球(1-9范围)统计结果
extra_freq = pd.Series(df[extra_cols].values.ravel()).value_counts()
extra_stat_df = extra_freq.reindex(range(1, 10), fill_value=0).reset_index()
extra_stat_df.columns = ['Number', 'Score']

新手易踩坑提示

  • 列筛选环节不能直接用模糊匹配like='ball_'选普通球列,因为extraball的列名中也包含ball_字段,会把extra列错误纳入普通球的统计范围,用正则精确匹配可以完全规避这个问题
  • 必须通过reindex方法对齐全区间数字,否则统计结果只会列出实际出现过的数字,频次为0的未出现数字会缺失,不符合覆盖全范围的输出要求
  • 用values.ravel()拉平多维数组统计的写法,比逐列循环累加计数的写法代码更简洁、运行效率更高,尤其适配大样本数据的统计场景

内容的提问来源于stack exchange,提问作者yilmaz Cam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.29 06:06:04