Python:选择唯一值数大于10的列

Python:选择唯一值数大于10的列,python,pandas,Python,Pandas,在R中,我们可以使用sapply通过以下方式提取唯一值数大于10的列: X[, sapply(X, function(x) length(unique(x))) >=10] 我们如何在Python中做同样的事情 此外,我们如何选择缺失比例小于10%的列,就像我们在R中所做的那样: X[, sapply(X, function(x) sum(is.na(x))/length(x) ) < 0.1] X[,sapply(X,函数(X)和(is.na(X))/length

在R中,我们可以使用
sapply
通过以下方式提取唯一值数大于10的列:

X[,  sapply(X,  function(x) length(unique(x)))  >=10]
我们如何在Python中做同样的事情

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

X[,  sapply(X,  function(x) sum(is.na(x))/length(x)  )  < 0.1]
X[,sapply(X,函数(X)和(is.na(X))/length(X))<0.1]
谢谢。

您可以与
应用一起使用,因为它仅适用于
系列

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

print(df.ix[:,df.apply(lambda x:x.nunique())>=2])
A C D
0  1.0  7  3
1南8 3
2  3.0  9  5
打印(df.isnull().sum())
A 1
B 1
c0
D 0
数据类型:int64
打印(df.isnull().sum()/len(df.index))
A 0.333
B 0.333
C 0.000000
D 0.000000
数据类型:64
打印(df.isnull().mean())
A 0.333
B 0.333
C 0.000000
D 0.000000
数据类型:64
打印(df.ix[:,df.isnull().sum()/len(df.index)<0.1])
C D
0  7  3
1  8  3
2  9  5
或:

打印(df.ix[:,df.isnull().mean()<0.1]) C D 0 7 3 1 8 3 2 9 5
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