Skip to main content
 首页 » 编程设计

python Pandas : select column with the number of unique values greater than 10

2025年05月04日16hnrainll

在 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] 

谢谢。

请您参考如下方法:

您可以使用 nunique使用 apply,因为它仅适用于 Series:

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

第二个isnull与 mean :

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