按特定列分组并在Python中使用dplython汇总行数

时间:2019-06-03 07:04:07

标签: r python-3.x dplyr

我想按特定的列分组并汇总行数。以下面的数据框“ foo.txt”为例:

label   type    var1    var2
A       name1   3       21
A       name1   2       18
A       name2   10      23
B       name3   6       19
C       name4   12      11
C       name4   4       9
C       name5   20      13
C       name5   1       5
C       name6   12      12

我希望按“标签”分组,并将“类型”的唯一行计为以下输出:

label   number
A       2
B       1
C       3

通过使用dplyr R包,我可以使用下面的代码来获取输出:

    library(dplyr)

    data <- read.table("foo.txt", header=T)
    data

    data2 <- data %>%
            group_by(label) %>%
            summarise(number=NROW(unique(type)))
    as.data.frame(data2)
  label number
1     A      2
2     B      1
3     C      3

在Python中,我想使用带有以下代码的dplython模块执行相同的操作:

import pandas as pd
from dplython import *

data = pd.read_csv("foo.txt", sep="\t")

data = DplyFrame(data)

data2 = (data >>
        group_by(X.label) >>
        summarize(number=len(X.type.unique())))
data2

但是,我收到如下错误:

Traceback (most recent call last):
  File "<stdin>", line 3, in <module>
TypeError: object of type 'Later' has no len()

如何使用dplython获得相同的输出?提前致谢。

1 个答案:

答案 0 :(得分:0)

我已切换到plydata python模块,它对我有用。

from plydata import *

data2 = (data >>
        group_by('contig') >>
        define(strands = 'len(type.unique())')