我正在使用以下代码删除熊猫中缺少数据的某些行:
df = df.replace(r'^\s+$', np.nan, regex=True)
df = df.replace(r'^\t+$', np.nan, regex=True)
df = df.dropna()
但是,我在数据框中仍有一些单元格为空白/空。为什么会这样呢?有什么办法摆脱带有这种空单元格的行?谢谢!
答案 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)
应该工作