python - 使用 R 或 Python 对数据进行子集化

标签 python r csv

我想对以下数据集进行子集化。具体来说,我只想检索“csv”格式的 1)ID、2)ASIN、3)组、4)销售排名和 5)类别。我将使用 R 或 Python。 (R不能经常读取这种不规则的数据格式)。

以下数据没有通常的格式,所以我不知道如何对其进行子集化。我有两年 有 R 经验,但主要使用该工具进行统计目的。所以,我不习惯处理这种不寻常格式的数据操作。如果有人能给我答案(或线索),那就太好了。 最下面是一组由“key:value”组成的数据。最终结果应该是这样的 这个:

Id   ASIN     group salesrank categories
 1  0827229534 Book  396585     2

原始数据如下:

************************************************************************************************
Id:   1

ASIN: 0827229534

title: Patterns of Preaching: A Sermon Sampler

group: Book

salesrank: 396585

similar: 5  0804215715  156101074X  0687023955  0687074231  082721619X

categories: 2

|Books[283155]|Subjects[1000]|Religion & Spirituality[22]|Christianity[12290]|Clergy[12360]|Preaching[12368]

|Books[283155]|Subjects[1000]|Religion & Spirituality[22]|Christianity[12290]|Clergy[12360]|Sermons[12370]

reviews: total: 2  downloaded: 2  avg rating: 5

2000-7-28  cutomer: A2JW67OY8U6HHK  rating: 5  votes:  10  helpful:   9

2003-12-14  cutomer: A2VE83MZF98ITY  rating: 5  votes:   6  helpful:   5

最佳答案

您可以尝试使用R

  1. 使用readLines读取文件
  2. 使用 paste 创建一个模式,使用 grep 对行进行子集
  3. 将“lines1”拆分到一个列表中,其中列表元素是每个前缀组。在split之前,我使用sub删除了:LHSRHS
  4. cbind 使用 do.call(cbind) 列表元素并将其转换为 data.frame
  5. 这将返回character类的列。不清楚哪一个应该是字符/数字

注意:我创建了两条记录只是为了重现该问题。

     lines <- readLines('file.txt')
     pat <- paste0(c('Id', 'ASIN', 'group', 'salesrank', 'categories'),
                                        ':', collapse='|')
     lines1 <- lines[grep(pat, lines)]
     val <- str_trim(sub(".*:", "", lines1))
     Grp <- sub(":.*", '', lines1)

     library(stringr)
     res <- do.call(cbind,split(val,Grp))

     res1 <-  as.data.frame(res,stringsAsFactors=FALSE)
     res1
     #       ASIN categories group Id salesrank
     #1 0827229534          2  Book  1    396585
     #2 0827529534          3 Book2  2    396587

关于python - 使用 R 或 Python 对数据进行子集化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27791358/

相关文章:

python - 添加从两个 pandas dfs 中选择的列

Python 多处理代码运行速度比单线程代码慢

r - 使用docker时如何运行带有入口点的Rscript?

r - 如何将函数应用于 SparkR 中的每一行?

python - Concat pandas dataframe 组合无序

debugging - 如何在调试时查看数据表

csv - 仅查询非空值并重命名字段?

python - 如何使 django 评论模型字段不需要站点

python - TA-Lib Python Wrapper only length-1 数组错误

python - R : The h5py Python package is required to save and load models 错误