Python Pandas提取登录用户数据时触发KeyError: 'username'问题
问题解决:Pandas提取用户个人资料时的KeyError及相关问题
错误原因分析
- KeyError: 'username':你用
p_csv.loc["username"]是尝试按行索引获取名为"username"的行,但你的CSV默认行索引是数字(0、1),"username"是列名,所以找不到导致报错。 - 长度不匹配/空DataFrame:代码中
==["user"]是将整列和列表比较,长度不匹配;且"user"不是CSV中存在的用户名,自然筛选不到数据导致空DataFrame。
修正后的代码实现
首先要确保登录后保存了当前用户的用户名(比如current_user),然后修改Home函数的逻辑:
# 登录成功后获取的当前用户名,实际应从登录流程传递过来 current_user = "Ramesh" # 示例值,替换为真实登录用户名 def Home(): print(1," : Profile") print(2," : Top-up") print(3," : Account Balance") print(4," : About us") print(5," : Back") print("") pref = int(input("Enter your Choice : ")) print("") if pref == 1: p_csv = pd.read_csv('Data.csv') # 筛选当前用户的行数据 user_data = p_csv[p_csv["username"] == current_user] # 处理用户不存在的情况 if user_data.empty: print("未找到用户信息,请检查登录状态") return # 提取需要的列生成个人资料DataFrame profile_df = user_data[["Name", "email", "Phone"]] print("你的个人资料:") print(profile_df)
关键修正点
- 使用**列索引
p_csv["username"]**获取用户名列,再通过布尔筛选== current_user定位当前用户的行。 - 用单个字符串(当前登录用户名)替代列表
["user"]进行比较,避免长度不匹配。 - 添加
user_data.empty判断,处理找不到用户的异常情况,避免空DataFrame输出。
测试效果
当current_user为"Ramesh"时,输出的DataFrame如下:
Name email Phone 0 Ramesh Chaurasiya rams@gmail.com 1234567890
内容的提问来源于stack exchange,提问作者Dikshant Chaturvedi
相关产品推荐
相关产品推荐

