如何统计Pandas DataFrame每行中指定值的出现次数?
每行统计'ker'出现次数的解决方案
你当前代码的问题在于:df.iloc[0, :].str.count('ker')仅针对第一行的列进行统计,后续赋值给整个count列时,因行索引不匹配导致全部显示为NaN。
以下是两种可行的解决方法:
方法一:使用apply逐行统计
适合中小规模数据集,代码直观易懂:
import pandas as pd df = pd.DataFrame({'A': ['ker', '2', '3', '4'], 'B': ['4', '5', '6', 'ker'], 'C': ['4', '13', '2.5ser','ker'], 'D': ['4', '5', '6','2.5ser']}) # 逐行统计每个单元格中'ker'的出现次数,再求和得到该行总次数 df['count'] = df.apply(lambda row: row.str.count('ker').sum(), axis=1) print(df)
方法二:向量化操作(高效)
适合大规模数据集,利用pandas的向量化特性提升效率:
import pandas as pd df = pd.DataFrame({'A': ['ker', '2', '3', '4'], 'B': ['4', '5', '6', 'ker'], 'C': ['4', '13', '2.5ser','ker'], 'D': ['4', '5', '6','2.5ser']}) # 转换为长格式统计后转回宽格式,再按行求和 df['count'] = df.stack().str.count('ker').unstack().sum(axis=1) print(df)
两种方法的输出结果一致:
A B C D count 0 ker 4 4 4 1 1 2 5 13 5 0 2 3 6 2.5ser 6 0 3 4 ker ker 2.5ser 2
内容的提问来源于stack exchange,提问作者kkerk
相关产品推荐
相关产品推荐

