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

如何用Python统计字符串中字母出现次数并保存到DataFrame新列

问题分析与解决方案

原始DataFrame

dnaseq
CCGGTA
ATGCGT

预期结果

统计每行dnaseq列中'C'的出现次数,生成新列Count:

dnaseqCount
CCGGTA2
ATGCGT1

错误代码分析与修正

第一段代码错误原因与修正

你的第一段代码问题在于**count变量在循环外初始化,每次循环会累加所有行的'C'总数,最后把这个总数赋值给整个Count列**,导致所有行都显示总和。

修正方法:把count的初始化放到循环内部,每次处理一行时重置计数,并且只给当前行赋值Count:

for index, row in df.iterrows():
    count = 0  # 每行处理前重置计数
    a = row['dnaseq']
    for i in a:  # 不需要转成list,字符串本身可迭代
        if i == 'C':
            count += 1
    df.loc[index, 'Count'] = count  # 赋值给当前行的Count列

第二段代码错误原因与修正

第二段代码的问题是每次循环都把当前行的统计结果赋值给整个Count列,最后一次循环的结果会覆盖所有行的数据。

修正方法:同样,只给当前行的Count列赋值:

from collections import Counter

for index, row in df.iterrows():
    a = row['dnaseq']
    b = Counter(a)
    df.loc[index, 'Count'] = b['C']  # 赋值给当前行的Count列

更高效的Pandas矢量化方案

用iterrows遍历行效率较低,推荐使用Pandas内置的字符串方法str.count(),一行代码搞定:

df['Count'] = df['dnaseq'].str.count('C')

这个方法是矢量化操作,比循环快很多,尤其当DataFrame行数较多时优势明显。

内容的提问来源于stack exchange,提问作者Harshita Choudhary

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 23:10:51