2013-07-17 92 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')