仅选择最多具有 N 个唯一值的列

Bha*_*mmu 3 python dataframe pandas data-science

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

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

df[[ c for df.columns in df if c in c.nunique<32]] 
Run Code Online (Sandbox Code Playgroud)

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

df.apply(lambda x : len(set(x))
Run Code Online (Sandbox Code Playgroud)

但效果不佳。请问有什么想法吗?提前致谢!

cs9*_*s95 7

nunique可以在整个 DataFrame 上调用(你必须调用它)。然后,您可以使用loc以下方法过滤列:

df.loc[:, df.nunique() < 32]
Run Code Online (Sandbox Code Playgroud)

最小可验证示例

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
Run Code Online (Sandbox Code Playgroud)