打印类别列表作为列

时间:2016-02-11 06:21:27

标签: python list pandas categories series

我以pandas文档为例。让我们说在阅读excel文件之后我有一个系列

import pandas as pd
s = pd.Series(["a","b","c","a"], dtype="category")

我知道我可以通过

获得不同的类别
scat=s.cat.categories
print scat

我得到了

Index([u'a', u'b', u'c'], dtype='object')

我想知道将此列表显示为列的好方法是什么。像

这样的东西
a
b
c

我可以通过u'摆脱np.asarray,但仍然无法获得我需要的格式。

2 个答案:

答案 0 :(得分:8)

当你说“出现”作为专栏时,我不确定你的意思。

您可以通过以下方式创建列表而不是索引:

>>> s.cat.categories.tolist()
['a', 'b', 'c']

或者您可以使用for循环在列结构中打印出来:

for c in s.cat.categories:
    print c

a
b
c

或者您可以创建一个系列(或数据框):

>>> pd.Series(s.cat.categories)
0    a
1    b
2    c
dtype: object

>>> pd.DataFrame(s.cat.categories)
   0
0  a
1  b
2  c

答案 1 :(得分:5)

我认为没问题 - 'u'表示unicode字符串:

s = pd.Series(["a","b","c","a"], dtype="category")
print s
0    a
1    b
2    c
3    a
dtype: category
Categories (3, object): [a, b, c]

scat=s.cat.categories
print scat
Index([u'a', u'b', u'c'], dtype='object')

print scat[0]
a

print type(scat[0])
<type 'str'>   

如果您想要不使用循环的打印列,请使用numpy reshape

print len(scat)
3
print scat.values.reshape(len(scat),1)
[['a']
 ['b']
 ['c']]