从字典列表生成的Pandas DataFrame无法选取列问题求助
解决Pandas DataFrame无法选取列的问题
核心原因
你遇到的问题大概率是DataFrame的列名包含隐藏不可见字符(比如前后空格、换行符、制表符),或者列名实际与你输入的字符串存在细微差异——print(list(df))只能显示表面字符,无法暴露这些隐藏内容。
排查与解决步骤
暴露列名真实结构
用repr()打印列名的原始字符串,直接看到隐藏字符:for col in df.columns: print(repr(col))比如输出如果是
'col1 '(末尾带空格),就说明问题所在。清理列名
直接去除列名前后的空白字符,同时替换内部的连续空白:# 去除列名前后的空格、换行、制表符等 df.columns = df.columns.str.strip() # 把列名中的连续空白(比如多个空格)替换成单个空格(可选) df.columns = df.columns.str.replace(r'\s+', ' ', regex=True)清理后再尝试
df[['col1']],应该就能正常选取列。强制指定列名(可选)
如果已经明确知道正确的列名,也可以直接替换:df.columns = ['col1', 'col2', 'col3'] # 替换为你实际需要的列名
额外验证点
确认orient参数是否匹配JSON结构:
- 如果
get_request.json()[par]是字典列表(每个字典对应一行数据),应该用pd.DataFrame(get_request.json()[par])或pd.DataFrame.from_dict(get_request.json()[par], orient="records"),而非orient="columns"——错误的orient参数可能导致列名解析异常,虽然创建DataFrame时无报错,但后续操作会出问题。
内容的提问来源于stack exchange,提问作者Dmitriy
相关产品推荐
相关产品推荐

