如何剥离自定义缺失值 pandas 数据框

how to strip customized missing value pandas dataframe


我有一个包含自定义缺失值的数据集,即字符“\?”,但具有缺失值的单元格还包含 whitespaces,其中 space 个字符的数量不一致。在我的示例图片中,在第 11 行,它可能有 3 个 space 或 4 个 space。

所以我的想法是对每个单元格应用str.strip()函数将其识别为缺失值并将其删除,但它仍然没有被识别为缺失值。

df = pd.read_csv('full_name', header=None, na_values=['?'])
df = df.apply(lambda x: x.str.strip() if x.dtype== 'object' else x)
df.dropna(axis=0, inplace=True, how='any')
df.head(20)]

解决这个问题的有效方法是什么?

dropna 丢弃 NaN 值。由于您的 NaN 实际上是 ?,您可以 replace 它们与 NaN 并使用 dropna:

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

mask 它们并使用 dropna:

df = df.mask(df.eq('?')).dropna()

或者简单地过滤掉那些行,只有 select 行没有任何 ?:

df = df[df.ne('?').all(axis=1)]

使用:

df = pd.DataFrame({'test': [1,2, '    ? ', ' ?   ']})
df[~df['test'].str.contains('\?', na=False)]