我想计算每列中唯一值的数量,并只选择那些唯一值少于 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))
但效果不佳。有什么想法吗?提前致谢!
最佳答案
nunique
可以在整个DataFrame上调用(你必须调用它)。然后,您可以使用 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
关于python - 仅选择最多具有 N 个唯一值的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56740611/