熊猫数据框中所有系列的唯一值计数的总计数

时间:2019-03-07 12:18:35

标签: python pandas series

在撰写本文时,我已经不知所措了。这可能是一个难以置信的小问题,但我无法解决。这是怎么回事:

  1. 我有一个df列的数据框80
  2. 通过value_counts().count()反复执行df,我能够打印列名和该列中唯一值的数量。< / li>

这是问题所在:我还想做的是在所有列的唯一值的sumcount()。本质上,我只需要一个号码。基本上,如果列1具有10个唯一性,列2具有5,列3具有3 ..,我期望sum()为18。

关于#2,这是有效的方法(简单的循环)-

def counting_unique_values_in_df(df):
    for evry_colm in df:
        print (evry_colm, "-", df[evry_colm].value_counts().count())

那行得通。它以这种格式打印-the column - unique values

现在,除此之外,我想打印唯一值的总和。无论我尝试了什么,它要么打印最后一列的唯一值(顺便说一句为2),要么随机打印一些东西。我知道这与for循环有关,但我似乎无法弄清楚。

我也知道,为了得到我想要的东西,本质上是sum(df[evry_colm].value_counts().count()),我需要将df[evry_colm].value_counts().count()转换为序列,甚至是数据帧,但我也坚持这样做!

预先感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

您可以使用nunique,它会返回所有列的序列,然后可以对其求和:

df.nunique().sum()

我的第一个本能是通过一系列的理解力来做到这一点

sum([df[col].nunique() for col in list(df)])

但这速度较慢且可恶性较差!