【问题标题】:Python Pandas: select column with the number of unique values greater than 10Python Pandas:选择唯一值数量大于10的列
【发布时间】:2017-02-18 13:37:35
【问题描述】:

在R中,我们可以使用sapply来提取唯一值数量大于10的列:

X[,  sapply(X,  function(x) length(unique(x)))  >=10]

我们如何在 Python Pandas 中做同样的事情?

另外,我们如何选择缺失比例小于 10% 的列,就像我们在 R 中可以做的那样:

X[,  sapply(X,  function(x) sum(is.na(x))/length(x)  )  < 0.1]

谢谢。

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    您可以将nuniqueapply 一起使用,因为它仅适用于Series

    print (df.ix[:, df.apply(lambda x: x.nunique()) >= 10])
    

    第二个isnullmean

    print (df.ix[:, df.isnull().mean() <  0.1])
    

    示例:

    df = pd.DataFrame({'A':[1,np.nan,3],
                       'B':[4,4,np.nan],
                       'C':[7,8,9],
                       'D':[3,3,5]})
    
    print (df)
         A    B  C  D
    0  1.0  4.0  7  3
    1  NaN  4.0  8  3
    2  3.0  NaN  9  5
    
    print (df.ix[:, df.apply(lambda x: x.nunique()) >= 2])
         A  C  D
    0  1.0  7  3
    1  NaN  8  3
    2  3.0  9  5
    
    print (df.isnull().sum())
    A    1
    B    1
    C    0
    D    0
    dtype: int64
    
    print (df.isnull().sum() / len(df.index))
    
    A    0.333333
    B    0.333333
    C    0.000000
    D    0.000000
    dtype: float64
    
    print (df.isnull().mean())
    A    0.333333
    B    0.333333
    C    0.000000
    D    0.000000
    dtype: float64
    
    
    print (df.ix[:, df.isnull().sum() / len(df.index) <  0.1])
       C  D
    0  7  3
    1  8  3
    2  9  5
    

    或者:

    print (df.ix[:, df.isnull().mean() <  0.1])
       C  D
    0  7  3
    1  8  3
    2  9  5
    

    【讨论】:

      猜你喜欢
      • 2023-01-03
      • 2023-03-31
      • 1970-01-01
      • 2017-04-02
      • 1970-01-01
      • 2020-03-12
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      相关资源
      最近更新 更多