df.dropna() 过滤数据中的缺失数据

pd.dropna

删除缺失的值,过滤数据中的缺失数据,缺失数据在pandas中用NaN标记

DataFrame.dropna(axis = 0,how = 'any',thresh = None,subset = None,inplace = False)

参数:

  1. axis:{0 or ‘index’, 1 or ‘columns’}, default 0,确定是否删除包含缺失值的行或列,在1.0.0版中进行了更改:将元组或列表传递到多个轴上。只允许一个轴
  2. how:{‘any’, ‘all’}, default ‘any’,当我们有至少一个NA或全部NA时,确定是否从DataFrame中删除行或列,'any':如果存在任何NA值,则删除该行或列,'all':如果所有值均为NA,则删除该行或列
  3. thresh:int, optional,需要许多非NA值
  4. subset:array-like, optional,要考虑的其他轴上的标签,例如,如果要删除行,这些标签将是要包括的列的列表
  5. 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

 https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.dropna.html?highlight=dropna#pandas.DataFrame.dropna

posted on 2020-09-18 16:18  小小喽啰  阅读(2915)  评论(0编辑  收藏  举报