Python 将类别列表打印为列

Python 将类别列表打印为列,python,list,pandas,categories,series,Python,List,Pandas,Categories,Series,我从熊猫文档中选取了一个例子。假设我在读了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 我可以通过做np.asarray来

我从熊猫文档中选取了一个例子。假设我在读了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

我可以通过做
np.asarray
来摆脱
u'
,但仍然没有得到我需要的格式

我认为这没问题-
'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'>   

我不知道你说的“出现”是什么意思

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

>>> s.cat.categories.tolist()
['a', 'b', 'c']
或者,您可以使用for循环在列结构中简单地打印它们:

for c in s.cat.categories:
    print c

a
b
c
或者您可以创建一个系列(或数据帧):


您正在使用Python2.x吗?对于python
3.4.3
我得到的结果没有
u
。是的,我使用的是python 2。有趣的是,python3x中没有u。你能检查一下你的字符串的
类型吗?比如'type(scat[0]),当我这样做时,我得到str,这给了我整个数据帧。我需要的只是打印的独特类别。所以a应该只出现一次。谢谢,这正是我一直在寻找的,这就是我所谓的“出现”专栏的意思。我并没有想到要使用循环,但我在想,如果没有循环,可能会有一种更简单的方法来实现它。系列和数据帧解决方案很棒!很好学。当我使用pd.DataFrame(scat)和print pd.DataFrame(scat)时,输出格式会改变。基本上,print命令删除了包装输出的nice表。知道为什么吗?
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