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

如何统计Pandas DataFrame两列均为有效值的行中值不同的数量?

解决你的Pandas统计需求

嘿,这个需求其实很好实现,我给你两种实用的方案,其中一种刚好契合你最初想先处理无效行的思路:

方案1:分步处理(符合你的初始想法)

先把带无效值(N/A)的行过滤掉,再统计剩余行里a和b不相等的数量:

import pandas as pd

# 构造你给出的示例DataFrame
df = pd.DataFrame({
    'a': ['N/A', 1, 2, 2, 0, 'N/A'],
    'b': [3, 1, 0, 'N/A', 1, 'N/A']
})
# 先把字符串形式的"N/A"替换成Pandas能识别的缺失值
df = df.replace('N/A', pd.NA)

# 第一步:筛选出a和b都不为缺失值的行
valid_rows = df.dropna(subset=['a', 'b'])
# 第二步:统计a≠b的行数(布尔值求和,True算1,False算0)
mismatch_count = (valid_rows['a'] != valid_rows['b']).sum()
print(mismatch_count)  # 结果就是你要的2

方案2:一步式布尔索引(更高效)

如果你不想生成中间DataFrame,直接用布尔条件组合就能一步搞定,处理大数据集时更省内存:

# 同样先替换"N/A"为缺失值
df = df.replace('N/A', pd.NA)

# 组合三个条件:a非空、b非空、a≠b,然后求和统计数量
mismatch_count = ((df['a'].notna()) & (df['b'].notna()) & (df['a'] != df['b'])).sum()
print(mismatch_count)  # 同样输出2

小提醒

一定要记得把字符串'N/A'替换成Pandas认可的缺失值(比如pd.NA或者np.nan),不然dropna()和notna()没法正确识别无效行哦~

内容的提问来源于stack exchange,提问作者Krzysztof Słowiński

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:03:26