Python 获取跨列的值计数-Pandas DataFrame

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/17691447/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-19 08:55:55  来源:igfitidea点击:

Get count of values across columns-Pandas DataFrame

pythonpandasdataframe

提问by Nilani Algiriyage

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.

我知道如何跨行执行此操作,但是对列执行此操作有点奇怪?帮我解决这个问题吗?谢谢。

采纳答案by waitingkuo

stackit 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

回答by Vamshi G

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