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

如何在Pandas中将DataFrame统计信息及指定模式计数存入字典?

解决方法

当然可以实现这个需求,不过你的现有代码存在两个问题:

  1. 没必要用df.iterrows()循环——统计是针对整个DataFrame的全局计算,逐行遍历会重复执行相同计算,完全冗余。
  2. 你写的df[df.columns[0]] == 'N/A'返回的是布尔值组成的Series,不是次数统计结果,需要用.sum()将布尔值(True=1,False=0)求和得到计数。

正确实现代码

import pandas as pd

df = pd.DataFrame([[1000, 'Jerry', 'BR1','BR1','N/A'], 
                [1001, 'N/A', 'N/A', 'BR1','N/A'], 
                ['N/A', 'N/A', 'BR3', 'BR2','N/A'],
                [1003, 'Perry','BR4','BR1','N/A']],
               columns=['ID', 'Name', 'Branch', 'Member of','Status'])

# 直接构建统计字典,无需循环
first_col = df[df.columns[0]]
new_dict = {
    'rows': len(df.index),
    'col1': first_col.count(),  # 统计第一列非NaN的条目数(注意:字符串'N/A'不算NaN,会被计入)
    '# of NA': (first_col == 'N/A').sum(),
    '# NOT NA': (first_col != 'N/A').sum()  # 或者用 len(df) - new_dict['# of NA'] 更高效
}

print(new_dict)

输出结果

{'rows': 4, 'col1': 4, '# of NA': 1, '# NOT NA': 3}

补充说明

  • first_col.count():这里的count()方法统计的是非NaN值的数量,由于你的数据中'N/A'是字符串类型,不是真正的缺失值(NaN),所以会被计入统计。如果需要排除字符串'N/A',可以改用(first_col != 'N/A').sum(),和# NOT NA的结果一致。
  • 用len(df.index)或df.shape[0]都可以获取总行数,效果相同。

内容的提问来源于stack exchange,提问作者EA Bubnoff

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 11:40:33