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

如何在R中按ID解析JSON并提取指定字段(附数据框示例)

我来帮你搞定这个问题!看起来你是在用pandas处理包含JSON字段的数据框对吧?之前的代码只返回单个ID的值,应该是没做好批量解析或者精准筛选的逻辑,下面分两种核心场景给你解决方案:

1. 批量提取所有ID对应的JSON字段(生成结构化数据框)

要把JSON字符串转换成规整的列,咱们可以用pandas的json_normalize工具,步骤很清晰:

import pandas as pd
import json

# 假设你的原始数据框名为df
# 第一步:把Json_Data列的字符串解析成Python字典
df['Json_Data'] = df['Json_Data'].apply(json.loads)

# 第二步:将字典展开成单独的列
expanded_json = pd.json_normalize(df['Json_Data'])

# 第三步:把原ID列和展开后的JSON字段合并,得到最终结构化数据
final_df = pd.concat([df['ID'], expanded_json], axis=1)

# 查看结果
print(final_df)

运行后就能得到你想要的ID | Name | Country | Code这种格式的数据框啦。

2. 针对特定ID提取指定字段(比如提取PA-124的Country)

如果只需要特定ID的某个字段,重点要先筛选目标行,再提取对应JSON字段:

提取单个ID的指定字段

# 筛选出目标ID的行
target_row = df[df['ID'] == 'PA-124']

# 提取Country字段(注意用iloc[0]取出筛选后的唯一行的字典)
target_country = target_row['Json_Data'].iloc[0]['Country']
print(f"PA-124的Country是:{target_country}")

批量提取多个ID的指定字段

如果要同时提取多个ID的某个字段,可以这样写:

# 指定要提取的ID列表和目标字段
target_ids = ['PA-124', 'PA-145', 'PA-185']
target_field = 'Country'

# 筛选行并提取字段,转成数据框
result_list = df[df['ID'].isin(target_ids)].apply(
    lambda row: {'ID': row['ID'], target_field: row['Json_Data'][target_field]},
    axis=1
).tolist()

result_df = pd.DataFrame(result_list)
print(result_df)

你之前只返回单个值的可能原因

大概率是你直接取了df['Json_Data'][0]这种单个索引的元素,没有针对整个数据框做批量解析,或者筛选后没正确遍历行来提取字段,上面的代码都解决了这些问题~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:10:45