2013-07-17 261 views
22

獲得價值數我有一個熊貓數據幀像以下:跨列,熊貓數據幀

   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')