在撰写本文时,我已经不知所措了。这可能是一个难以置信的小问题,但我无法解决。这是怎么回事:
df
列的数据框80
value_counts().count()
反复执行df
,我能够打印列名和该列中唯一值的数量。< / li>
这是问题所在:我还想做的是在所有列的唯一值的sum
中count()
。本质上,我只需要一个号码。基本上,如果列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()
转换为序列,甚至是数据帧,但我也坚持这样做!
预先感谢您的帮助。
答案 0 :(得分:3)
您可以使用nunique,它会返回所有列的序列,然后可以对其求和:
df.nunique().sum()
我的第一个本能是通过一系列的理解力来做到这一点
sum([df[col].nunique() for col in list(df)])
但这速度较慢且可恶性较差!