使用pandas提取推特文本中hashtag出现TypeError报错如何解决
报错原因与解决方法
报错核心原因
你遇到的TypeError: string indices must be integers报错,本质是pd.read_csv()读取csv文件时,entities字段原本是JSON结构的推特元数据,读取后会被默认解析为字符串类型,无法直接用字典的键索引语法(x['hashtags'])取值。同时你给出的读取csv的代码还缺了右括号,也会导致语法错误。
解决代码
基础可用版本
首先导入json模块,将字符串格式的entities转为Python字典后再提取字段:
import pandas as pd import json # 补全读取csv的右括号 df = pd.read_csv('tw_climate_.csv') # 先转json再提取hashtag df['hashtags'] = df['entities'].map(lambda x: [i['text'] for i in json.loads(x)['hashtags']])
稳健兼容版本
如果数据集中存在空值、entities格式异常的行,可以加异常处理避免运行中断,没有合法hashtag的行默认返回空列表:
import pandas as pd import json def extract_hashtags(entities_str): try: entities = json.loads(entities_str) return [i['text'] for i in entities.get('hashtags', [])] except: return [] df = pd.read_csv('tw_climate_.csv') df['hashtags'] = df['entities'].map(extract_hashtags)
内容的提问来源于stack exchange,提问作者shan
相关产品推荐
相关产品推荐

