仅选择最多具有 N 个唯一值的列
Posted
技术标签:
【中文标题】仅选择最多具有 N 个唯一值的列【英文标题】:Select only columns that have at most N unique values 【发布时间】:2019-11-06 11:58:44 【问题描述】:我想计算每列中唯一值的数量,并仅选择那些具有少于 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】: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
【讨论】:
以上是关于仅选择最多具有 N 个唯一值的列的主要内容,如果未能解决你的问题,请参考以下文章