2013-07-17 13 views
22

全体値のカウントは、私は次のようなパンダのデータフレームを持って取得:列-パンダDATAFRAME

   A    B    C 
0 192.168.2.85 192.168.2.85 124.43.113.22 
1 192.248.8.183 192.248.8.183 192.168.2.85 
2 192.168.2.161   NaN 192.248.8.183 
3 66.249.74.52   NaN 192.168.2.161 
4   NaN   NaN 66.249.74.52 

私は列にわたって一定の値のカウントを取得したいです。

IP   Count 
192.168.2.85 3 #Since this value is there in all coulmns 
192.248.8.183 3 
192.168.2.161 2 
66.249.74.52 2 
124.43.113.22 1 

私は行全体にこの方法を知っているが、列のためにこれをやっては少し奇妙で、これを解決するために私を助けて:?だから私の予想出力は何かに似ていますか?ありがとう。

答えて

32

stackそれは最初にしvalue_countsを使用します。

In [14]: df.stack().value_counts() 
Out[14]: 
192.248.8.183 3 
192.168.2.85  3 
66.249.74.52  2 
192.168.2.161 2 
124.43.113.22 1 
dtype: int64 
+0

おかげで、これは私が期待したものです。 –

+2

パンダシリーズだけがvalue_counts()を使用できます。 df.stack()を使用することで、DataFrameをSeriesに変換しました。あなたの解決策は正しいですが、なぜそれが働いていたのかが分かってくれていました。 – user3155053

2
df['Counts'] = df[['col1','col2','col3']].groupby(['col1','col2','col3']).transform('count')