I have a Pandas DataFrame like following:
我有一个像下面这样的Pandas 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
I want to get the count of a certain values across columns. So my expected output is something like:
我想获得跨列的特定值的计数。所以我的预期输出是这样的:
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
I know how to this across rows, but doing this for columns is bit strange?Help me to solve this? Thanks.
我知道如何跨行,但对列进行此操作有点奇怪吗?帮帮我解决这个问题?谢谢。
2 个解决方案
#1
34
stack it first and then use value_counts:
首先堆栈然后使用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
#2
2
df['Counts'] = df[['col1','col2','col3']].groupby(['col1','col2','col3']).transform('count')
#1
34
stack it first and then use value_counts:
首先堆栈然后使用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
#2
2
df['Counts'] = df[['col1','col2','col3']].groupby(['col1','col2','col3']).transform('count')