解析 df 中的 JSON 列并提取特定键值
Parse a JSON column in a df and extract specific key value
我有一个 pandas DataFrame,其中包含一个带有嵌套 JSON 字典的列。我想规范化 JSON 列 ('media') 并提取存在的键 'url' 的值。 'media' json 有效载荷具有三种类型的可能媒体对象,所有这些都包含在示例数据集中。我只需要从 'MessageMediaWebPage' 对象中提取。
使用
后的典型错误(虽然有一些变化)
# Using JSON normalize function
pd.json_normalize(df['media'], max_level=1)
AttributeError: 'str' object has no attribute 'values'
下面列出了完整的错误
JSON 格式的数据和代码示例。示例数据集仅包含三个记录,但太大而无法直接 post。 link 是我的 git:
# The json is nested
# The full data set consists of several columns and 40K + records. This is just a small slice.
df = pd.read_json('https://raw.githubusercontent.com/whitedl/telegram/main/df_3.json', dtype = {'telegram_id':object})
df.info()
pd.json_normalize(df['media'], max_level=1)
作为背景,我尝试了以下解决方案:
问题是媒体列中的值是字符串类型。您可以将 ast.literal_eval
应用于媒体列以将其值转换为 python 字典。
import ast
pd.json_normalize(df['media'].apply(ast.literal_eval), max_level=1)
我有一个 pandas DataFrame,其中包含一个带有嵌套 JSON 字典的列。我想规范化 JSON 列 ('media') 并提取存在的键 'url' 的值。 'media' json 有效载荷具有三种类型的可能媒体对象,所有这些都包含在示例数据集中。我只需要从 'MessageMediaWebPage' 对象中提取。
使用
后的典型错误(虽然有一些变化)# Using JSON normalize function
pd.json_normalize(df['media'], max_level=1)
AttributeError: 'str' object has no attribute 'values'
下面列出了完整的错误
JSON 格式的数据和代码示例。示例数据集仅包含三个记录,但太大而无法直接 post。 link 是我的 git:
# The json is nested
# The full data set consists of several columns and 40K + records. This is just a small slice.
df = pd.read_json('https://raw.githubusercontent.com/whitedl/telegram/main/df_3.json', dtype = {'telegram_id':object})
df.info()
pd.json_normalize(df['media'], max_level=1)
作为背景,我尝试了以下解决方案:
问题是媒体列中的值是字符串类型。您可以将 ast.literal_eval
应用于媒体列以将其值转换为 python 字典。
import ast
pd.json_normalize(df['media'].apply(ast.literal_eval), max_level=1)