首页 >后端开发 >Python教程 >如何在 Pandas DataFrame 中高效地将空白值替换为 NaN?

如何在 Pandas DataFrame 中高效地将空白值替换为 NaN?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-10-27 05:03:30338浏览

How to Efficiently Replace Whitespace Values with NaN in Pandas DataFrames?

在 Pandas 中用 NaN 替换空白值(空白)

问题:

考虑一个带有空白值的 Pandas 数据框存在于某些列中。目标是用 NaN 值替换这些空格。

丑陋的解决方案:

<code class="python">for i in df.columns:
    df[i][df[i].apply(lambda i: True if re.search('^\s*$', str(i)) else False)]=None</code>

此解决方案迭代每一列,使用正则表达式生成布尔掩码,并将空白值替换为 None。然而,它效率低下且不符合习惯。

改进的解决方案:

<code class="python">df = pd.DataFrame([
    [-0.532681, 'foo', 0],
    [1.490752, 'bar', 1],
    [-1.387326, 'foo', 2],
    [0.814772, 'baz', ' '],
    [-0.222552, '   ', 4],
    [-1.176781, 'qux', '  '],
], columns='A B C'.split(), index=pd.date_range('2000-01-01','2000-01-06'))

# replaces field that's entirely space (or empty) with NaN
print(df.replace(r'^\s*$', np.nan, regex=True))</code>

此解决方案利用了 Pandas 内置的 Replace() 函数,可以用于替换基于正则表达式模式的指定值。通过使用 r'^s*$',正则表达式会匹配任何完全由空格(或为空)组成的字段,并将其替换为 NaN。

优化:

  • 检查列数据类型是否为对象,因为空白值通常出现在对象列中。
  • 如果有效数据包含空白字符,请使用 r'^s $' 而不是 r'^s*$' .

以上是如何在 Pandas DataFrame 中高效地将空白值替换为 NaN?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn