【问题标题】:Select only columns that have at most N unique values仅选择最多具有 N 个唯一值的列
【发布时间】: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))

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

【问题讨论】:

    标签: python pandas dataframe data-science


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2023-03-31
      • 2012-12-06
      • 2021-10-12
      • 2023-03-30
      • 1970-01-01
      • 2013-10-14
      • 1970-01-01
      • 1970-01-01
      • 2021-10-25
      相关资源
      最近更新 更多