首頁 >後端開發 >Python教學 >如何在 Pandas DataFrame 中用 NaN 替換空字串(空格)?

如何在 Pandas DataFrame 中用 NaN 替換空字串(空格)?

Linda Hamilton
Linda Hamilton原創
2024-10-31 04:18:30701瀏覽

How to Replace Empty Strings (Whitespace) with NaN in a Pandas DataFrame?

在Pandas 中用NaN 取代空白值(空白)

如何在Pandas 中有效地用NaN 取代空白值(空白) dataframe ?

初始方法:

以下程式碼能夠用None 取代空白值,但效率很低,也不是最Pythonic 的解:

<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>

最優方案:

Pandas 透過df.replace() 方法提供了更簡潔高效的解決方案:

<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'))

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

這段程式碼替換空白值(正規表示式:^s*$)與NaN,產生所需的輸出:

                   A    B   C
2000-01-01 -0.532681  foo   0
2000-01-02  1.490752  bar   1
2000-01-03 -1.387326  foo   2
2000-01-04  0.814772  baz NaN
2000-01-05 -0.222552  NaN   4
2000-01-06 -1.176781  qux NaN

注意:

如果您需要處理可能的有效資料包含空格,可以將正規表示式修改為r'^s $',它只符合完全由空格組成的欄位。

以上是如何在 Pandas DataFrame 中用 NaN 替換空字串(空格)?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn