如何从DataFrame的entities列提取url至Tweet_url列?解决Key error问题
解决Pandas提取entities中media URL的KeyError问题
错误原因
你的代码直接访问df_copy['entities']['media'],但并非所有行的entities字典都包含media键,当某行没有该键时就会触发KeyError。
解决方案
方法1:使用apply结合字典get方法安全提取
通过get方法先获取media字段(不存在则返回空列表),再判断是否有内容后提取URL:
df_copy['Tweet_url'] = df_copy['entities'].apply( lambda x: x.get('media', [])[0]['url'] if len(x.get('media', [])) > 0 else None )
方法2:用pd.json_normalize展开字段(更直观)
先将entities中的media数组展开为独立DataFrame,再合并回原表:
import pandas as pd # 展开media字段,忽略无media的行 media_df = pd.json_normalize(df_copy['entities'], record_path='media', errors='ignore') # 将展开后的URL对应回原DataFrame索引 media_df.index = df_copy.index df_copy['Tweet_url'] = media_df['url']
前置检查:确保entities是字典类型
如果entities列存储的是字符串格式的字典(而非实际字典对象),需先转换:
import ast df_copy['entities'] = df_copy['entities'].apply(ast.literal_eval)
内容的提问来源于stack exchange,提问作者Rneub01
相关产品推荐
相关产品推荐

