如何计算有或没有Pandas的表中的类别数?

时间:2015-07-10 14:42:03

标签: python pandas

假设我们有一个表格,其中包含按主题存储在书柜中的书籍数据:

N       Shelf1    Shelf2   Shelf3
Case1   Python    PHP      Python
Case2   Rails     R        PHP
Case3   PHP       Python   Python

所以我需要计算我们库中每个主题的书数,如下所示:

Python: 4 books
PHP: 3
R: 1
Rails: 1

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

您可以先将数据帧重新整形为“堆叠”记录,然后使用value_counts功能。

import pandas as pd

# your data
# ===================
print(df)

Out[269]: 
       N  Shelf1  Shelf2  Shelf3
0  Case1  Python     PHP  Python
1  Case2   Rails       R     PHP
2  Case3     PHP  Python  Python

# processing
# ======================================
# make column 'N' as index, stack, then value_counts
df.set_index('N').stack().value_counts()

Out[270]: 
Python    4
PHP       3
Rails     1
R         1
dtype: int64

答案 1 :(得分:0)

您可以在ravel属性上调用values,该属性返回一个np数组以展平您的df,并从此构造系列并调用value_counts

In [42]:
pd.Series(df[['Shelf1','Shelf2','Shelf3']].values.ravel()).value_counts()

Out[42]:
Python    4
PHP       3
Rails     1
R         1
dtype: int64