pandas:在分隔符上拆分一列,并获得唯一值

时间:2016-12-16 18:32:08

标签: python pandas

我正在将一些代码从R转换为python以提高性能,但我对pandas库并不是很熟悉。

我有一个如下所示的CSV文件:

O43657,GO:0005737
A0A087WYV6,GO:0005737
A0A087WZU5,GO:0005737
Q8IZE3,GO:0015630 GO:0005654 GO:0005794
X6RHX1,GO:0015630 GO:0005654 GO:0005794
Q9NSG2,GO:0005654 GO:0005739

我想在分隔符(此处为空格)上拆分第二列,并在此列中获取唯一值。在这种情况下,代码应返回[GO:0005737, GO:0015630, GO:0005654 GO:0005794, GO:0005739]

在R中,我会使用以下代码执行此操作:

df <- read.csv("data.csv")
unique <- unique(unlist(strsplit(df[,2], " ")))

在python中,我有以下使用pandas的代码:

df = pd.read_csv("data.csv")
split = df.iloc[:, 1].str.split(' ')
unique = pd.unique(split)

但这会产生以下错误:

TypeError: unhashable type: 'list'

如何在python中的分隔符上拆分后,在CSV文件的列中获取唯一值?

1 个答案:

答案 0 :(得分:2)

设置

int first = 1;
for (int i = 10; i < number; i *= 10) {
    first = number / i;
}

解决方案

from io import StringIO
import pandas as pd

txt = """O43657,GO:0005737
A0A087WYV6,GO:0005737
A0A087WZU5,GO:0005737
Q8IZE3,GO:0015630 GO:0005654 GO:0005794
X6RHX1,GO:0015630 GO:0005654 GO:0005794
Q9NSG2,GO:0005654 GO:0005739"""

s = pd.read_csv(StringIO(txt), header=None, squeeze=True, index_col=0)