假设我有以下数据.
df = pd.DataFrame({'group':list('aaaabbbb'),
'val':[1,3,3,np.NaN,5,6,6,2],
'id':[1,np.NaN,np.NaN,np.NaN,np.NaN,3,np.NaN,3]})
df
Run Code Online (Sandbox Code Playgroud)
我想删除NaN值百分比超过50%的列.我可以通过运行以下操作然后使用drop手动完成.
df.isnull().sum()/len(df)*100
Run Code Online (Sandbox Code Playgroud)
但是,我想知道是否有一个优雅和快速的代码来做到这一点?
可以使用threshdropna的参数.
df.dropna(axis=1, thresh=int(0.5*len(df)))
Run Code Online (Sandbox Code Playgroud)
使用mean与boolean indexing用于删除列:
print (df.isnull().mean() * 100)
group 0.0
id 62.5
val 12.5
dtype: float64
Run Code Online (Sandbox Code Playgroud)
df1 = df.loc[:, df.isnull().mean() <= .5]
print (df1)
group val
0 a 1.0
1 a 3.0
2 a 3.0
3 a NaN
4 b 5.0
5 b 6.0
6 b 6.0
7 b 2.0
Run Code Online (Sandbox Code Playgroud)
df.dropna(thresh=len(df)//2,axis=1)
Out[57]:
group val
0 a 1.0
1 a 3.0
2 a 3.0
3 a NaN
4 b 5.0
5 b 6.0
6 b 6.0
7 b 2.0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1756 次 |
| 最近记录: |