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

Python Pandas提取登录用户数据时触发KeyError: 'username'问题

问题解决:Pandas提取用户个人资料时的KeyError及相关问题

错误原因分析

  1. KeyError: 'username':你用p_csv.loc["username"]是尝试按行索引获取名为"username"的行,但你的CSV默认行索引是数字(0、1),"username"是列名,所以找不到导致报错。
  2. 长度不匹配/空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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 18:40:39