首頁 >後端開發 >Python教學 >如何在 Pandas DataFrame 中有效地將空白值替換為 NaN?

如何在 Pandas DataFrame 中有效地將空白值替換為 NaN?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-27 05:03:30339瀏覽

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