Python 将类别列表打印为列
我从熊猫文档中选取了一个例子。假设我在读了excel文件后有一个系列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来
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