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

如何用Pandas统计DataFrame每行中指定字符串的出现次数?

解决Pandas DataFrame每行特定字符串计数问题

你想要统计DataFrame每行中'True'的出现次数,但当前代码返回的是布尔值(仅判断是否存在'True'),而非具体计数。

原问题代码

# 创建DataFrame
d = {'Period': [1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4], 
'Result': ['True','None','False','True','False','True','False','True','True','False','False','True','False','True','False','False'],
'Result1': ['True','None','False','True','False','True','False','True','True','False','False','True','False','True','False','False'],
'Result2': ['True','None','False','True','False','True','False','True','True','False','False','True','False','True','False','False']}
df = pd.DataFrame(data=d)
# 错误的计数方式:返回布尔值
df['Count'] = df.apply(lambda row: row.astype(str).str.count('True').any(), axis=1)
print(df)

期望输出

Period  Result Result1 Result2  Count
0       1    True    True    True      3
1       2    None    None    None      0
2       3   False   False   False      0
3       4    True    True    True      3
4       1   False   False   False      0
5       2    True    True    True      3
6       3   False   False   False      0
...    ...     ...     ...     ...    ...

正确解法

解法1:针对指定列使用apply求和

原代码的问题在于用了.any()(仅判断是否存在目标字符串),替换成.sum()即可对每行的计数求和。同时建议仅统计需要的列(避免Period数值列被误处理):

# 仅统计Result、Result1、Result2列中的'True'次数
df['Count'] = df[['Result', 'Result1', 'Result2']].apply(lambda row: row.str.count('True').sum(), axis=1)

解法2:向量化操作(更高效)

用向量化判断替代apply,性能更优,适合处理大数据量:

# 直接判断元素是否等于'True',再按行求和(True会被视为1,False视为0)
df['Count'] = (df[['Result', 'Result1', 'Result2']] == 'True').sum(axis=1)

运行上述任意一种解法后,Count列会正确显示每行中'True'的出现次数,与期望输出一致。

内容的提问来源于stack exchange,提问作者John Conor

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 17:45:48