Pandas:删除带有缺失数据的行

3
我正在使用以下代码在pandas中删除一些缺失数据的行:
df = df.replace(r'^\s+$', np.nan, regex=True)
df = df.replace(r'^\t+$', np.nan, regex=True)
df = df.dropna()

然而,我的数据框中仍有一些单元格看起来是空的。为什么会这样?有没有办法摆脱这些带有空白/空单元格的行?谢谢!


1
你能展示一下数据框的样本,这样我们就可以重现问题吗? - Sreeram TP
2
df = df.replace('', np.nan) 是什么意思? - jezrael
1
像@jezrael所说,尝试在您的代码中的dropna之前添加df = df.replace('', np.nan, regex=True) - Sreeram TP
@jezrael:添加 df = df.replace('', np.nan) 可以解决问题。谢谢! - Edamame
1
可能是Python Pandas DataFrame remove Empty Cells的重复问题。 - user3483203
2个回答

4

您可以使用:

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

2

根据您使用的 pandas 版本,您可以执行以下操作:

DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False) axis : {0 or ‘index’, 1 or ‘columns’}, default 0

Determine if rows or columns which contain missing values are removed.

0, or ‘index’ : Drop rows which contain missing values. 1, or ‘columns’ : Drop columns which contain missing value.

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

axes. source

所以,目前要删除带有空值的行。
df = df.dropna(axis=0)

应该可以工作


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接