python - Pandas :在分隔符上拆分一列,并获得唯一值

标签 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 文件列中的唯一值?

最佳答案

设置

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)

解决方案

pd.unique(s.str.split(expand=True).stack())

array(['GO:0005737', 'GO:0015630', 'GO:0005654', 'GO:0005794', 'GO:0005739'], dtype=object)

关于python - Pandas :在分隔符上拆分一列,并获得唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41190422/

相关文章:

python - 这种情况下如何让多个python程序进行通信呢?

python - 选择不同长度的数字

python - Windows XP : "error: Unable to find vcvarsall.bat" 中的 Cython 问题

python - 隐藏 xticks 标签每第 n 个标签或 Pandas 绘图上的值/使 x 轴可读

Python - 如何加入共享相似数据但在附加列中的多个 csv 文件?

python - Pandas Dataframe asFreq 改变索引的数据类型

由于缺少 ._ufuncs dll,Python scipy 模块导入错误

python - 遍历数据框的 Pandaic 方法

python - 如何将计数数据框转换为概率密度函数

python - 在 pandas 中切片串联数据框