我想计算每列中唯一值的数量,并仅选择那些少于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))
,但效果不佳。有什么想法吗?预先感谢!
答案 0 :(得分:4)
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