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

如何创建统计字符出现次数的列并合并至Pandas DataFrame

解决字符计数并合并到Pandas DataFrame的问题

我来帮你搞定这个问题!你的现有代码存在几个关键问题,导致没办法正确填充每行的字符计数:

  • 每次循环里的T_C[i[0]]=i[1]是给整列赋值,而不是当前行,所以最后只会保留最后一次循环的结果
  • 没有处理当前行未出现的字符,比如某行只有A时,B列应该显示0,但你的代码不会生成这个值
  • Temp_cab变量没有被用到,属于冗余代码

改进方案:用apply+Counter优雅实现

咱们用更简洁高效的方式来实现需求,代码如下:

import pandas as pd
from collections import Counter

# 初始化原始数据
C_det = pd.DataFrame(['A','B','AA','BB','ABB'], columns=['C_Dk'])

# 定义字符统计函数:确保返回A和B的计数,未出现的字符填0
def count_ab_chars(s):
    char_counter = Counter(s)
    # 用get方法获取计数,不存在则返回0
    return {'A': char_counter.get('A', 0), 'B': char_counter.get('B', 0)}

# 对每个字符串应用统计函数,转换为DataFrame后和原数据合并
char_count_df = C_det['C_Dk'].apply(count_ab_chars).apply(pd.Series)
final_df = pd.concat([C_det, char_count_df], axis=1)

# 查看结果
print(final_df)

运行结果

执行后你会得到符合预期的DataFrame:

C_Dk  A  B
0    A  1  0
1    B  0  1
2   AA  2  0
3   BB  0  2
4  ABB  1  2

通用扩展(支持任意字符)

如果你的数据里不止A和B,还包含其他字符,可以用下面的通用版本,自动识别所有出现过的字符并统计:

import pandas as pd
from collections import Counter

C_det = pd.DataFrame(['A','B','AA','BB','ABB','AC'], columns=['C_Dk'])

# 提取所有出现过的唯一字符
all_unique_chars = set(''.join(C_det['C_Dk']))

def count_all_chars(s):
    char_counter = Counter(s)
    return {char: char_counter.get(char, 0) for char in all_unique_chars}

char_count_df = C_det['C_Dk'].apply(count_all_chars).apply(pd.Series)
final_df = pd.concat([C_det, char_count_df], axis=1)

print(final_df)

这个版本会自动处理所有出现的字符,比如上面的例子会生成A、B、C三列的计数。

内容的提问来源于stack exchange,提问作者Newton Khan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:48:12