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

从Pandas DataFrame的JSON列提取指定日期followers值报错求助

问题分析与解决

错误原因

你的代码存在两个核心问题:

  • 未解析JSON字符串:json2列存储的是JSON格式的字符串,直接传入函数的x是字符串类型,并非可直接索引的字典结构(若你已提前解析,那第二个问题是关键)。
  • 错误访问列表元素:obj对应的是一个包含多个字典的列表,你直接用x['obj']['timestp']试图用字符串索引列表,这就触发了list indices must be integers or slices, not str错误——列表只能用整数索引或切片访问元素。

修正后的代码

import ast
import pandas as pd

def get_followers(json_str):
    # 解析带单引号的JSON字符串(ast.literal_eval兼容非标准单引号JSON)
    data = ast.literal_eval(json_str.strip('"'))
    # 遍历obj列表中的每个数据项
    for item in data['obj']:
        if item['timestp'] == '2022-12-03':
            return item['followers']
    # 无匹配日期时返回None
    return None

# 应用函数生成新列
df['target_followers'] = df['json2'].apply(get_followers)

关键修正点

  1. 解析字符串:使用ast.literal_eval替代json.loads,因为你的JSON字符串用了单引号(标准JSON要求双引号),ast.literal_eval可以正确解析这种格式。
  2. 遍历列表:通过循环遍历data['obj']列表中的每个字典元素,逐个匹配timestp字段,找到目标日期后返回对应的followers值。
  3. 容错处理:添加无匹配时的返回逻辑,避免因没有对应日期导致函数报错。

内容的提问来源于stack exchange,提问作者Isabel Lopez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 18:00:53