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

如何解析CSV/数据框列中字符串格式的嵌套数组

解析CSV中存储为字符串的Numpy数组为数据框

方法一:利用JSON解析工具(推荐)

你的字符串格式和JSON数组完全兼容,用jsonlite包可以直接解析,避免复杂的字符串操作:

library(dplyr)
library(jsonlite)
library(tidyr)

# 原始数据框
df <- data.frame(first_column  = c("a","b","c"),
                 second_column = c("[[1,2],[3,4]]","[[5,6],[7,8]]","[[9,10],[11,12]]"))

# 解析并转换为目标格式
result_df <- df %>%
  # 将每个字符串解析成二维数组列表
  mutate(second_column = purrr::map(second_column, jsonlite::fromJSON)) %>%
  # 把列表展开为多行
  unnest(second_column) %>%
  # 将每行的向量拆分为单独的列
  un_wider(second_column, names_sep = "_") %>%
  # 重命名为你需要的列名
  rename(col_1 = second_column_1, col_2 = second_column_2) %>%
  # 可选:移除原first_column列
  select(-first_column)

print(result_df)

输出结果:

col_1 col_2
1     1     2
2     3     4
3     5     6
4     7     8
5     9    10
6    11    12

方法二:纯字符串处理(延续你的操作)

如果不想额外依赖jsonlite,可以继续用字符串操作完成:

library(dplyr)
library(stringr)
library(tidyr)

df <- data.frame(first_column  = c("a","b","c"),
                 second_column = c("[[1,2],[3,4]]","[[5,6],[7,8]]","[[9,10],[11,12]]"))

result_df <- df %>%
  # 移除最外层的[]
  mutate(second_column = str_replace_all(second_column, c("^\\[" = "", "\\]$" = ""))) %>%
  # 按"],["拆分每个字符串为多行
  separate_rows(second_column, sep = "\\],\\[") %>%
  # 移除剩余的[]符号
  mutate(second_column = str_remove_all(second_column, "\\[|\\]")) %>%
  # 按逗号拆分为两列,并自动转换为数值类型
  separate(second_column, into = c("col_1", "col_2"), sep = ",", convert = TRUE) %>%
  # 可选:移除原first_column列
  select(-first_column)

print(result_df)

输出结果与目标格式完全一致:

col_1 col_2
1     1     2
2     3     4
3     5     6
4     7     8
5     9    10
6    11    12

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 09:53:00