使用json_normalize生成DataFrame后列存在却报KeyError的问题
问题原因与解决方案
问题根源:你在
meta参数里指定的字段名末尾多了空格——'audience_id '和'audience_name '(引号内字段名后存在空格),导致生成的DataFrame列名实际是带末尾空格的(比如'audience_id '),而你调用时用的是不带空格的'audience_id',因此触发KeyError。验证方法:执行以下代码可以确认列名的实际内容:
for col in audiences_df.columns: print(repr(col))输出会显示列名是
'audience_id '(带空格)而非'audience_id'。修复方案:
- 最规范的方式是修改
meta参数,去掉字段名后的空格:audiences = response['audiences'] audiences_df = pd.json_normalize( response['audiences'], record_path=['fees'], meta=['audience_id', 'audience_name'], # 删除字段名末尾的空格 errors='ignore' ) print(audiences_df.columns) print(audiences_df["audience_id"]) - 若不想修改原代码,调用时需使用带空格的列名:
print(audiences_df["audience_id "]) # 保留列名末尾的空格
- 最规范的方式是修改
内容的提问来源于stack exchange,提问作者Horacio Nesman
相关产品推荐
相关产品推荐

