You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何统计大型dataframe每行中特定及各类元素的数量?

嘿,针对你这个拥有239行、54万多列的大型DataFrame统计需求,我给你整理了高效的解决方案——毕竟这么宽的表,得用最快的方法才行!

1. 统计每行所有元素(A/B/0)的数量

因为你的数据元素只有A、B、0三种,优先用向量化操作(比循环或apply快得多,适合大数据量):

假设你的DataFrame第一列是rs编号(比如示例里的rs22233…),先把数据列和编号列区分开:

import pandas as pd

# 假设你的DataFrame叫df,先提取数据列(排除第一列的编号)
data_cols = df.columns[1:]

然后分别统计每行A、B、0的数量:

# 统计每行A的数量
df['count_A'] = df[data_cols].eq('A').sum(axis=1)
# 统计每行B的数量
df['count_B'] = df[data_cols].eq('B').sum(axis=1)
# 统计每行0的数量(注意如果0是字符串就用'0',数字就用0)
df['count_0'] = df[data_cols].eq('0').sum(axis=1)

如果想一次性得到所有类别的统计结果(生成单独的统计DataFrame),可以用value_counts,但记得填充缺失类别(避免某些行没有A/B/0时出现NaN):

# 对每行做value_counts,并用reindex确保A、B、0都存在,缺失的填0
row_counts = df[data_cols].apply(
    lambda x: x.value_counts().reindex(['A', 'B', '0'], fill_value=0),
    axis=1
)
# 把统计结果合并到原DataFrame
df = pd.concat([df, row_counts], axis=1)

不过注意:这个方法比向量化的eq().sum()慢一点,适合需要一次性输出所有类别统计的场景。

2. 统计每行中特定元素的数量

如果只需要统计某一个或几个特定元素的数量,用下面的方法:

  • 单个元素(比如只统计A):
    df['A_count'] = df[data_cols].eq('A').sum(axis=1)
    
  • 多个元素(比如统计A和B的总数):
    df['AB_total'] = df[data_cols].isin(['A', 'B']).sum(axis=1)
    
3. 针对超大型DataFrame的优化技巧

因为你的表有54万多列,内存占用可能较高,这里给你两个优化点:

  • 转为分类数据:把A、B、0转为category类型,能大幅降低内存占用,同时加快统计速度:
    df[data_cols] = df[data_cols].astype('category')
    
  • 避免循环/低效操作:绝对不要用Python循环遍历每行每列统计,速度会慢到难以接受,一定要用pandas的向量化API(比如eq()、isin()、sum())。

举个和你示例数据匹配的例子:
假设你的示例数据是:

id          col1 col2 col3 col4 col5 col6 col7 col8 col9 col10 col11
0  rs22233…    B    B    B    B    B    B    B    B    B    B     B
1  rs38622…    B    B    B    B    B    B    B    B    A    B     A
2  rs13933…    B    B    A    B    B    B    B    B    B    B     B
3  rs38637…    B    B    A    A    A    B    B    B    A    B     A
4  rs12554…    B    B    B    B    A    B    A    B    B    B     B
5  rs41105…    A    A    A    A    B    A    B    A    A    A     B

运行向量化统计代码后,第二行(rs38622…)的count_A会是2,count_B是9,完全符合数据情况。

内容的提问来源于stack exchange,提问作者张力三

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:31:24