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

Python处理CSV:统计研究者关联术语频次报错求助

问题分析与解决

你的需求回顾

你想要用Python读取CSV文件,统计每个研究者关联特定疾病术语的频次,当用户输入术语后输出类似表格的统计结果。先帮你把原始数据整理成标准CSV格式(方便pd.read_csv正确识别列):

Terms,Researcher
Asthma,Dr. Roberts
Brochial cancer,Dr. Lee
HIV,Dr.Roberts
HIV,Dr. Lee
Influenzae,Dr. Wang
Bronchial Cancer,Dr. Wang
Influenzae,Dr. Roberts
dengue,prof. christopher
Arthritis,prof. swaminathan
Arthritis,prof. christopher
Asthma,Dr. Roberts
HIV,Dr. Lee
Bronchial Cancer,Dr. Wang
dengue,prof. christopher
HIV,prof. christopher
HIV,Dr. Lee

你遇到的问题

你后续写的代码不仅出现了语法错误,还有一些逻辑问题。报错信息如下:

File "<ipython-input-9-b85d0d187059>", line 5
    if row[data.Terms] == term
                              ^
SyntaxError: invalid syntax

修复后的完整代码

下面是能完美实现你需求的代码,我会同步解释关键改进点:

import pandas as pd

# 读取CSV文件(确保你的文件是逗号分隔的标准格式)
data = pd.read_csv("Researchers Title Terms.csv")

# 统一术语和研究者的格式,避免大小写、空格导致匹配失败
data['Terms'] = data['Terms'].str.strip().str.lower()
# 统一研究者名字的大小写格式,让输出更规范美观
data['Researcher'] = data['Researcher'].str.strip().str.title()

# 获取用户输入并统一格式
term = input("Enter the term you are looking for: ").strip().lower()

# 筛选出匹配当前术语的所有行
filtered_rows = data[data['Terms'] == term]

# 判断是否找到匹配的术语
if filtered_rows.empty:
    print(f"Sorry! '{term}' not found in the database!")
else:
    # 用Pandas内置方法统计每个研究者的频次,自动处理所有研究者
    researcher_stats = filtered_rows['Researcher'].value_counts().reset_index()
    # 重命名列名,让输出更清晰
    researcher_stats.columns = ['Names of the researchers', 'Frequency']
    
    # 输出结果
    print(f"Term you are looking for : {term.upper()}")
    # 输出时去掉索引,让格式完全符合你的需求
    print(researcher_stats.to_string(index=False))

关键改进点说明

  1. 语法错误修复:原代码里if/elif/else语句后都漏掉了冒号:,这是Python语法的硬性要求,必须添加。
  2. 高效的DataFrame操作:Pandas不推荐手动遍历行(你原代码里的for row in data其实是遍历列名,不是行),用data[data['Terms'] == term]直接筛选匹配行,速度更快且代码更简洁。
  3. 动态统计研究者:用value_counts()自动统计所有研究者的频次,不用硬编码每个研究者的名字,哪怕CSV新增了研究者,代码也能正确统计。
  4. 大小写与空格处理:统一把术语转成小写、去掉首尾空格,避免因为"HIV"和"hiv"、"Bronchial Cancer"和"bronchial cancer"这类差异导致匹配失败;同时统一研究者名字的格式,让输出更规范。

测试效果

当你输入HIV时,输出会是:

Term you are looking for : HIV
Names of the researchers  Frequency
             Dr. Roberts          1
               Dr. Lee          3
      Prof. Christopher          1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 10:04:13