【问题标题】:Get count of values across columns-Pandas DataFrame获取跨列的值计数-Pandas DataFrame
【发布时间】:2015-07-07 03:40:00
【问题描述】:

我有一个如下所示的 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

我想获取跨列的某个值的计数。所以我的预期输出是这样的:

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

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

【问题讨论】:

  • @OP,如果给出更高效的答案,您会考虑接受吗?

标签: python pandas dataframe


【解决方案1】:

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

【讨论】:

  • 谢谢,这是我所期望的。
  • 只有 pandas 系列可以使用 value_counts()。通过使用 df.stack(),您将他的 DataFrame 转换为一个系列。您的解决方案是正确的,但知道它为什么起作用对我有很大帮助。
【解决方案2】:
df['Counts'] = df[['col1','col2','col3']].groupby(['col1','col2','col3']).transform('count')

【讨论】:

    猜你喜欢
    • 2021-01-16
    • 2013-07-14
    • 2021-05-24
    • 1970-01-01
    • 2015-12-11
    • 2022-01-19
    • 1970-01-01
    • 2016-06-30
    相关资源
    最近更新 更多