我有一个csv文件,在一列中包含一个numpy数组。当阅读csv文件时,结果列将是字符类型,因为它都被 Package 在字符串中。我想将它解析到一个单独的 Dataframe 中来分析数据。
输入数据
csv格式:
first_column,second_column
a,"[[1,2],[3,4]]"
b,"[[5,6],[7,8]]"
c,"[[9,10],[11,12]]"
作为 Dataframe :
df <- data.frame(first_column = c("a","b","c"),
second_column = c("[[1,2],[3,4]]","[[5,6],[7,8]]","[[9,10],[11,12]]"))
我所尝试的
因为我不知道有任何直接解析函数可以从字符串中提取数组,所以我开始做字符串操作。
删除外部[]
字符:
> df %>% mutate(second_column = str_replace_all(second_column, c("^\\[" = "","]$" = "")))
first_column second_column
1 a [1,2],[3,4]
2 b [5,6],[7,8]
3 c [9,10],[11,12]
不过,从现在开始我不知道该怎么办了。
预期输出
最终生成的 Dataframe 应如下所示:
col_1 col_2
1 1 2
2 3 4
3 5 6
4 7 8
5 9 10
6 11 12
请注意,真实的 Dataframe 中有更多的列和更多的行
5条答案
按热度按时间kjthegm61#
将出现的]、[替换为换行符,将方括号替换为空格,并使用
read.table
读取。给出:
klr1opcd2#
或使用
trimws
9gm1akwq3#
处理给定列上任意行数的基R方法。
tnkciper4#
下面是一个使用
tidyverse
的黑客解决方案:ftf50wuq5#
从
reticulate
到py_eval
的技巧或者从
jsonlite
使用fromJSON
的另一技巧输出