使用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
相关产品推荐
相关产品推荐

