大熊猫:删除缺少数据的行

时间:2018-08-22 05:27:37

标签: python-3.x pandas

我正在使用以下代码删除熊猫中缺少数据的某些行:

df = df.replace(r'^\s+$', np.nan, regex=True)
df = df.replace(r'^\t+$', np.nan, regex=True)
df = df.dropna()

但是,我在数据框中仍有一些单元格为空白/空。为什么会这样呢?有什么办法摆脱带有这种空单元格的行?谢谢!

2 个答案:

答案 0 :(得分:3)

您可以使用:

df = df.replace('', np.nan)

如果要简化代码,可以通过|加入正则表达式,对于空白区域,请使用^$

df = pd.DataFrame({'A':list('abcdef'),
                   'B':['',5,4,5,5,4],
                   'C':['','  ','   ',4,2,3],
                   'D':[1,3,5,7,'       ',0],
                   'E':[5,3,6,9,2,4],
                   'F':list('aaabbb')})

df = df.replace(r'^\s+$|^\t+$|^$', np.nan, regex=True)
print (df)
   A    B    C    D  E  F
0  a  NaN  NaN  1.0  5  a
1  b  5.0  NaN  3.0  3  a
2  c  4.0  NaN  5.0  6  a
3  d  5.0  4.0  7.0  9  b
4  e  5.0  2.0  NaN  2  b
5  f  4.0  3.0  0.0  4  b

答案 1 :(得分:1)

根据您的熊猫版本,您可以这样做:

  

DataFrame.dropna(axis = 0,how ='any',thresh = None,subset = None,   inplace = False)轴:{0或“索引”,1或“列”},默认为0

     

确定是否删除了包含缺失值的行或列。

     

0或“ index”:删除包含缺失值的行。    1或“列”:删除包含缺失值的列。

Deprecated since version 0.23.0:: Pass tuple or list to drop on multiple
     

轴。 source

所以,现在要删除具有空值的行

df = df.dropna(axis=0)

应该工作