从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)
关键修正点
- 解析字符串:使用
ast.literal_eval替代json.loads,因为你的JSON字符串用了单引号(标准JSON要求双引号),ast.literal_eval可以正确解析这种格式。 - 遍历列表:通过循环遍历
data['obj']列表中的每个字典元素,逐个匹配timestp字段,找到目标日期后返回对应的followers值。 - 容错处理:添加无匹配时的返回逻辑,避免因没有对应日期导致函数报错。
内容的提问来源于stack exchange,提问作者Isabel Lopez
相关产品推荐
相关产品推荐

