Series的value_counts()可以对值进行计数,但DataFrame没这个方法,不过可以使用apply来调用value_counts()方法,apply将DataFrame分解成Series并分别代入value_counts()中求得计数结果,并将计数结果重新再组合成DataFrame
data=pd.DataFrame(np.random.randint(0,11,size=100).reshape(10,10))
data
0 1 2 3 4 5 6 7 8 9
0 6 2 3 0 2 7 7 8 6 10
1 9 1 7 5 2 1 6 1 4 3
2 8 2 5 6 4 8 1 8 1 8
3 1 10 5 8 10 6 8 3 10 2
4 3 10 9 3 6 8 5 4 10 6
5 7 3 6 5 9 5 4 9 6 7
6 4 8 7 5 5 4 2 4 10 8
7 10 9 3 9 7 7 8 5 1 10
8 1 3 1 3 5 9 10 6 8 10
9 2 6 6 10 6 9 3 8 1 10
data.apply(pd.value_counts)
0 1 2 3 4 5 6 7 8 9
0 NaN NaN NaN 1.0 NaN NaN NaN NaN NaN NaN
1 2.0 1.0 1.0 NaN NaN 1.0 1.0 1.0 3.0 NaN
2 1.0 2.0 NaN NaN 2.0 NaN 1.0 NaN NaN 1.0
3 1.0 2.0 2.0 2.0 NaN NaN 1.0 1.0 NaN 1.0
4 1.0 NaN NaN NaN 1.0 1.0 1.0 2.0 1.0 NaN
5 NaN NaN 2.0 3.0 2.0 1.0 1.0 1.0 NaN NaN
6 1.0 1.0 2.0 1.0 2.0 1.0 1.0 1.0 2.0 1.0
7 1.0 NaN 2.0 NaN 1.0 2.0 1.0 NaN NaN 1.0
8 1.0 1.0 NaN 1.0 NaN 2.0 2.0 3.0 1.0 2.0
9 1.0 1.0 1.0 1.0 1.0 2.0 NaN 1.0 NaN NaN
10 1.0 2.0 NaN 1.0 1.0 NaN 1.0 NaN 3.0 4.0
data.apply(pd.value_counts).sum(axis=1).astype(np.int)
0 1
1 10
2 7
3 10
4 7
5 10
6 13
7 8
8 13
9 8
10 13
dtype: int32