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

如何使用Pandas根据用户输入的物种名处理DataFrame:统计Status列频次并获取FTP Path及代码修正

修复你的Pandas筛选代码

我来帮你一步步修复代码,你的代码里有几个语法、逻辑和列名匹配的问题导致运行失败,咱们逐个解决:

问题点分析

  • 列名错误:你的DataFrame列索引是#Organism/Name,但代码里写的是Organism/Name,漏掉了开头的#,这会直接导致"列不存在"的报错。
  • 语法与大小写问题:if语句括号未闭合,且混用了Data和data(Python大小写敏感,变量名必须完全一致)。
  • 逻辑混乱:重复了相同的判断逻辑,且else分支的逻辑不符合需求——你需要先筛选目标物种的行,再统一处理统计和FTP路径获取,而非分开判断。

修正后的完整代码

import pandas as pd

# 假设你的DataFrame已经正确加载为变量data
print("bacterie species?")
species = input().strip()  # 去除输入前后空格,避免因空格导致匹配失败

# 筛选目标物种的行,使用正确的列名#Organism/Name
filtered_rows = data.loc[data["#Organism/Name"] == species]

if not filtered_rows.empty:
    # 统计Status列的value_counts
    print("Status 统计结果:")
    print(filtered_rows['Status'].value_counts())
    
    # 获取对应的FTP Path,转换为列表方便查看所有结果
    print("\n对应的FTP Path:")
    print(filtered_rows['FTP Path'].tolist())
else:
    print("This species not found")

关键修正说明

  1. 列名匹配:严格使用#Organism/Name作为筛选列名,和你的DataFrame索引保持一致。
  2. 统一变量名:全程使用小写data(原代码中的Data是错误拼写)。
  3. 优化筛选逻辑:先把筛选结果存入filtered_rows变量,避免重复执行筛选操作,同时通过not filtered_rows.empty判断是否找到目标物种。
  4. 输入处理:用strip()处理用户输入,避免用户不小心输入前后空格导致匹配失败。
  5. FTP Path处理:用tolist()将Series格式的FTP路径转换为列表,方便查看所有匹配的结果(如果有多个行的话)。

内容的提问来源于stack exchange,提问作者Yad.yos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 18:52:47