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

如何从DataFrame的字典格式行中提取degree和rating数值?

解决方法

你的每行数据本质是字符串格式的列表嵌套字典,不是原生Python对象,直接用字符串截取或分隔符拆分容易出错,正确做法是先把字符串解析为可操作的Python字典,再提取目标字段。

具体步骤与代码示例

假设你的DataFrame中存储该数据的列名为info,代码如下:

import pandas as pd
import ast

# 替换成你实际的DataFrame
df = pd.DataFrame({
    'info': ["[{'degree': 0.1, 'name': 'Colins Dental Clinic', 'rating': 9, 'level': 'fourth'}]",
             "[{'degree': 0.3, 'name': 'Green Family Clinic', 'rating': 8, 'level': 'third'}]"]
})

# 1. 将字符串解析为Python字典(取列表第一个元素)
df['parsed_data'] = df['info'].apply(lambda x: ast.literal_eval(x)[0])

# 2. 提取degree和rating生成新列
df['degree'] = df['parsed_data'].apply(lambda x: x['degree'])
df['rating'] = df['parsed_data'].apply(lambda x: x['rating'])

# 可选:删除中间解析列
df = df.drop('parsed_data', axis=1)

执行后结果

info  degree  rating
0  [{'degree': 0.1, 'name': 'Colins Dental Clinic...     0.1       9
1  [{'degree': 0.3, 'name': 'Green Family Clinic'...     0.3       8

注意事项

  • 如果字符串存在引号不匹配问题(比如混有单双引号),需先统一格式(例如用str.replace()把双引号转成单引号),否则ast.literal_eval会报错
  • 若每行列表中包含多个字典,需调整[0]的索引值,匹配你要提取的目标字典位置

内容的提问来源于stack exchange,提问作者Frank Swanton

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 22:25:55