如何仅选择唯一值小于数字的列

时间:2019-06-24 16:27:19

标签: python pandas dataframe data-science

我想计算每列中唯一值的数量,并仅选择那些少于32个唯一值的列。

我尝试使用 df.filter(nunique<32)  和

df[[ c for df.columns in df if c in c.nunique<32]] 

但是因为nunique是方法而不是函数,所以它们不起作用。认为len(set()可以工作并尝试过

df.apply(lambda x : len(set(x))

,但效果不佳。有什么想法吗?预先感谢!

1 个答案:

答案 0 :(得分:4)

可以在整个DataFrame上调用

nunique(您必须调用它)。然后,您可以使用loc过滤列:

df.loc[:, df.nunique() < 32]

最小可验证示例

df = pd.DataFrame({'A': list('abbcde'), 'B': list('ababab')})
df
   A  B
0  a  a
1  b  b
2  b  a
3  c  b
4  d  a
5  e  b

df.nunique()
A    5
B    2
dtype: int64

df.loc[:, df.nunique() < 3]
   B
0  a
1  b
2  a
3  b
4  a
5  b