【Python】Dataframe删除空值

使用dropna()函数就可以去掉dataframe中的空值。这里就直接用的官方文档里面的例子。

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
  1. 1. dropna()函数有一个axis参数,用来指明是删除有空值的维度(行或列)。默认的是删除行。参数的值可以为{0 or ‘index’, 1 or ‘columns’}
df.dropna()
     name        toy       born
1  Batman  Batmobile 1940-04-25

删除有空值的列。 

df.dropna(axis='columns')/df.dropna(axis=1)
       name
0    Alfred
1    Batman
2  Catwoman
  1. 2. dropna()函数默认(how='any')的是只要行或列出现了空值,就删除行或列。可以通过how参数设置为行或列的所有值都为空值时才删除。我们新添加一列的值全为空,然后删除。
>>> df['sex'] = [np.nan,np.nan,np.nan]
>>> df
       name        toy       born  sex
0    Alfred        NaN        NaT  NaN
1    Batman  Batmobile 1940-04-25  NaN
2  Catwoman   Bullwhip        NaT  NaN
>>> df.dropna(how='all',axis=1)
       name        toy       born
0    Alfred        NaN        NaT
1    Batman  Batmobile 1940-04-25
2  Catwoman   Bullwhip        NaT
>>> 
  1. 3. 如果想删除指定列有空值的行,可以使用subset参数。这里删除的是name和born列的值为空的行。
df.dropna(subset=['name', 'born'])
       name        toy       born
1    Batman  Batmobile 1940-04-25
  1. 4. 需要注意的是,上面的操作并没有改变df,也就是说df里面的空值并没有删除。
>>> df.dropna()
     name        toy       born
1  Batman  Batmobile 1940-04-25
>>> df
       name        toy       born
0    Alfred        NaN        NaT
1    Batman  Batmobile 1940-04-25
2  Catwoman   Bullwhip        NaT
>>> 

需要将删除空值的dataframe赋值给新的变量,或者将inplcace参数赋值为true来改变原来的df(dataframe的许多函数里都有这个参数)。

>>> df2 = df.dropna()
>>> df2
     name        toy       born
1  Batman  Batmobile 1940-04-25
>>> 
>>> df.dropna(inplace=True)
>>> df
     name        toy       born
1  Batman  Batmobile 1940-04-25
>>> 

 

你可能感兴趣的:(DataFrame,Python)