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

使用Python Pandas实现角色信息查询时遇AttributeError错误求助

原神角色查询Pandas程序报错解决

我用Python Pandas写了个原神角色信息查询程序,输入角色名就能查武器、推荐圣遗物这些信息,但输入Albedo这类角色名时会报错。

我的代码:

import pandas as pd
df=pd.read_csv('C:/Users/VivoBook/Genshin_Stats/Genshin_stats2.csv', header=0,
                      names=['Charcter ','Vision','Weapon','Best Weapon','Best weapon (F2P)','Other Weapon','Role',
                                   'Reccomended artifact set','Reccomended artifact set 2'])

df.set_index('Charcter ', inplace= True)
print(df.index)
while True:
       Charecter = input('charecter name: ')
       if Charecter in df.index:
          print(df[df.charecter==charcter])
       elif 'Charcter ' == '':
              break
       else:
           print('Charcter ',"not found")

报错信息:

charecter name: Albedo

Traceback (most recent call last):
  File "C:\Users\VivoBook\Genshin_Stats\main.py", line 11, in <module>
    print(df[df.charecter==charcter])
  File "C:\Users\VivoBook\Genshin_Stats\venv\lib\site-packages\pandas\core\generic.py", line 5907, in __getattr__
    return object.__getattribute__(self, name)
AttributeError: 'DataFrame' object has no attribute 'charecter'

错误原因及修复方案:

  • 拼写与大小写混乱:列名是Charcter (注意末尾有空格),但代码里写成了charecter(拼写错误+小写);输入变量定义的是Charecter,判断时却用了charcter(少写一个r)
  • 索引使用错误:已经把Charcter 设为DataFrame的索引了,不需要再用列筛选,直接通过索引取值更高效
  • 退出条件错误:原来的elif 'Charcter ' == ''是判断固定字符串,应该判断输入的内容是否为空来退出循环

修改后的代码:

import pandas as pd
# 保持列名与CSV中定义一致,注意'Charcter '末尾的空格
df = pd.read_csv(
    'C:/Users/VivoBook/Genshin_Stats/Genshin_stats2.csv',
    header=0,
    names=['Charcter ', 'Vision', 'Weapon', 'Best Weapon', 'Best weapon (F2P)', 'Other Weapon', 'Role',
           'Reccomended artifact set', 'Reccomended artifact set 2']
)

df.set_index('Charcter ', inplace=True)
print("可用角色列表:", df.index.tolist())

while True:
    # 统一变量名拼写,避免混乱
    character_name = input('请输入角色名称(直接回车退出): ')
    # 输入为空时退出循环
    if not character_name:
        break
    # 检查角色是否在索引中
    if character_name in df.index:
        # 通过索引直接获取对应角色的数据
        print(df.loc[character_name])
    else:
        print(f"{character_name} 未找到,请检查输入")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 09:30:37