Python读取CSV文件中字典格式列的问题求助
解决CSV中字典列解析后仍为object类型的问题
首先要明确:pandas本身没有专门的字典数据类型,所有Python原生对象(包括dict、list等)在DataFrame中都会被标记为object类型。所以你看到的object类型不一定代表解析失败,先验证是否真正将字符串转为了字典:
# 检查第一行bot_score列的实际类型 print(type(df['bot_score'].iloc[0]))
如果输出是<class 'dict'>,说明解析已经成功,只是pandas用object来标识这个列的类型。
如果输出不是dict,说明解析过程有错误,可能是CSV中的字符串格式有问题(比如多余引号、转义字符错误、部分行格式不完整),可以尝试用json.loads替代ast.literal_eval(你的示例字典是标准JSON格式),同时添加错误处理定位问题行:
import json def safe_parse_dict(s): try: return json.loads(s) except Exception as e: print(f"解析失败行内容: {s}") print(f"错误信息: {e}") return None df['bot_score'] = df['bot_score'].apply(safe_parse_dict)
如果确认解析成功,但需要更方便地操作字典内的数据,可以将嵌套字典展开为多列:
# 将bot_score列的字典展开为单独的DataFrame expanded_df = pd.json_normalize(df['bot_score']) # 和原DataFrame合并 df = pd.concat([df.drop('bot_score', axis=1), expanded_df], axis=1)
这样就能直接访问cap.english、display_scores.english.overall这类字段,无需再操作嵌套字典。
内容的提问来源于stack exchange,提问作者Yaxin Dai
相关产品推荐
相关产品推荐

