df.dropna() 过滤数据中的缺失数据
pd.dropna
删除缺失的值,过滤数据中的缺失数据,缺失数据在pandas中用NaN标记
DataFrame.dropna(axis = 0,how = 'any',thresh = None,subset = None,inplace = False)
参数:
- axis:{0 or ‘index’, 1 or ‘columns’}, default 0,确定是否删除包含缺失值的行或列,在1.0.0版中进行了更改:将元组或列表传递到多个轴上。只允许一个轴
- how:{‘any’, ‘all’}, default ‘any’,当我们有至少一个NA或全部NA时,确定是否从DataFrame中删除行或列,'any':如果存在任何NA值,则删除该行或列,'all':如果所有值均为NA,则删除该行或列
- thresh:int, optional,需要许多非NA值
- subset:array-like, optional,要考虑的其他轴上的标签,例如,如果要删除行,这些标签将是要包括的列的列表
- inplace:bool, default False
官网例子
df = pd.DataFrame({"name": ['Alfred', 'Batman', 'Catwoman'], "toy": [np.nan, 'Batmobile', 'Bullwhip'], "born": [pd.NaT, pd.Timestamp("1940-04-25"), pd.NaT]}) df
name toy born
0 Alfred NaN NaT
1 Batman Batmobile 1940-04-25
2 Catwoman Bullwhip NaT
过滤掉有缺失数据
df.dropna()
name toy born
1 Batman Batmobile 1940-04-25
删除有缺失的列
df.dropna(axis='columns')
name
0 Alfred
1 Batman
2 Catwoman
将所有元素都缺失的行删除
df.dropna(how='all')
name toy born
0 Alfred NaN NaT
1 Batman Batmobile 1940-04-25
2 Catwoman Bullwhip NaT
仅保留至少具有2个非NA值的行
df.dropna(thresh=2)
name toy born
1 Batman Batmobile 1940-04-25
2 Catwoman Bullwhip NaT
在哪些列中查找缺失值
df.dropna(subset=['name', 'born'])
name toy born
1 Batman Batmobile 1940-04-25
是否覆盖原来的数据
df.dropna(inplace=True) df
name toy born
1 Batman Batmobile 1940-04-25