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

如何用Python统计列表元素在DataFrame中的出现次数?代码排查

问题修正:统计列表元素在DataFrame列中的出现次数

原代码问题点

  • 嵌套循环无缩进,违反Python语法规则
  • for i in listX[0]错误遍历第一个元素的单个字符,而非整个列表的元素
  • 单个字符串元素无法调用str.contains(该方法属于pandas Series对象)
  • Python不支持count++语法,需使用count += 1

方案1:高效统计每个元素的出现次数(推荐)

利用pandas向量操作,比逐行循环效率更高,输出每个元素对应的匹配行数:

import pandas as pd

# 读取Excel文件(路径前加r避免转义错误)
df = pd.read_excel(r'C:\Users\ma\Desktop\filee')
listX = ["HOFF", "Customers", "bank"]

# 初始化结果字典
element_counts = {item: 0 for item in listX}

for item in listX:
    # 检查列中每个元素是否包含当前item,统计匹配行数
    # case=False忽略大小写,na=False处理空值避免报错
    match_count = df['Examples'].str.contains(item, case=False, na=False).sum()
    element_counts[item] = match_count

# 输出每个元素的匹配次数
print(element_counts)

方案2:统计所有元素的总匹配行数

如果需要统计包含任意列表元素的总行数(只要行包含一个元素就算一次):

import pandas as pd

df = pd.read_excel(r'C:\Users\ma\Desktop\filee')
listX = ["HOFF", "Customers", "bank"]

# 拼接正则表达式,匹配任意列表元素
pattern = '|'.join(listX)
total_match = df['Examples'].str.contains(pattern, case=False, na=False).sum()

print(f"总匹配行数:{total_match}")

方案3:逐行循环实现(符合你最初的思路)

如果坚持用嵌套循环逐行检查,修正后的代码如下:

import pandas as pd

df = pd.read_excel(r'C:\Users\ma\Desktop\filee')
listX = ["HOFF", "Customers", "bank"]

total_count = 0

# 遍历列表每个元素
for item in listX:
    # 遍历Examples列的每一行,用fillna处理空值避免报错
    for text in df['Examples'].fillna(''):
        if item in text:
            total_count += 1

print(f"总出现次数:{total_count}")

内容的提问来源于stack exchange,提问作者Maha Mohammed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 13:36:30