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

如何用tidyjson提取JSON值替换数据框原列内容?

解决方案

要把原数据框df的response列替换为提取出的JSON"text"值,核心是将tidyjson提取的结果转换成向量后,直接赋值回原列即可,具体分以下几种情况处理:

情况1:每个JSON数组仅含一个元素

这种情况下提取出的text行数和原数据框行数一致,直接提取赋值:

# 提取JSON中的text并转为向量
extracted_text <- df$response %>% 
  as.tbl_json() %>% 
  gather_array() %>% 
  spread_values(text = jstring('text')) %>% 
  pull(text)

# 替换原response列
df$response <- extracted_text

情况2:每个JSON数组含多个元素

如果单个JSON里有多个text值,你需要先确定如何整合这些值:

  • 取数组第一个元素:
extracted_text <- df$response %>% 
  as.tbl_json() %>% 
  gather_array() %>% 
  filter(array.index == 1) %>% # 筛选数组第一个元素
  spread_values(text = jstring('text')) %>% 
  pull(text)

df$response <- extracted_text
  • 将多个text合并为单个字符串(用逗号分隔):
extracted_text <- df$response %>% 
  as.tbl_json() %>% 
  gather_array() %>% 
  spread_values(text = jstring('text')) %>% 
  group_by(document.id) %>% # 按原数据框的行分组
  summarise(text = paste(text, collapse = ", ")) %>% 
  pull(text)

df$response <- extracted_text

关键说明

pull(text)会把提取后的text列转换成向量,只要保证向量的行数和原数据框df的行数一致,就能直接替换原response列。如果你的JSON结构更复杂,需要根据实际层级调整spread_values或其他tidyjson函数的使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 12:50:21