返回分类系列的分类标签

时间:2018-11-11 23:01:49

标签: python pandas series

我正在使用熊猫提取数据集的类别,如以下代码所示:

data=pd.read_csv("iris.csv",header=None)
data[4]=data[4].astype("category")

当我打印data [4]的值时,我得到了以下列表:

1         Setosa
2         Setosa
3         Setosa
4         Setosa
5         Setosa
6         Setosa
7         Setosa
...
149    Virginica
150    Virginica
Name: 4, Length: 150, dtype: category
Categories (3, object): [Setosa, Versicolor, Virginica]

但是我想在数组中包含三个类别,以便具有以下内容:

[Setosa, Versicolor, Virginica]

我正在四处张望,但找不到任何可以服务的东西。

有帮助吗?

1 个答案:

答案 0 :(得分:0)

data[4].cat.categories.values可能比.unique()优越。

看看https://pandas.pydata.org/pandas-docs/stable/categorical.html,“使用类别”。

  

注意:unique()的结果并不总是与   Series.cat.categories,因为Series.unique()有几个   保证,即按以下顺序返回类别   外观,并且只包含实际存在的值。

.cat.categories.values似乎要快得多,因为我想像上面列出的原因。

示例:

import pandas as pd
import numpy as np

s = pd.Series(np.random.choice(['a', 'b', 'c'], 1000), dtype = "category")

% timeit a = s.unique()

# 303 µs ± 23.2 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

% timeit b = s.cat.categories.values

# 1.26 µs ± 27.9 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

print(s.cat.categories.values)

# ['a' 'b' 'c']

数据集的大小和其他要求可能会确定哪个更好。