如何在 Pandas 資料框中用 NaN 替換空白值?

Susan Sarandon
發布: 2024-10-30 10:13:27
原創
184 人瀏覽過

How do you replace whitespace values with NaN in a Pandas dataframe?

在Pandas 中用NaN 取代空白值

問題

在Pandas 資料框中尋找空白值並將其替換為NaN 可能是一個挑戰。目標是將具有空字串值的資料幀轉換為具有 NaN 值的資料幀,從而可能改善資料處理和分析。

解決方案

df.replace() 方法提供了一個優雅的解決方案,讓您可以根據正規表示式替換值:

<code class="python">df.replace(r'^\s*$', np.nan, regex=True)</code>
登入後複製

在此在正規表示式模式中,^ 符合字串的開頭,s* 符合零個或多個空白字符,$ 符合字串的結尾。因此,此正規表示式檢查完全由空格或空字串組成的字串。

實作

將此解決方案應用於範例資料框:

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

result = df.replace(r'^\s*$', np.nan, regex=True)

print(result)</code>
登入後複製

這將產生所需的輸出:

                   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
登入後複製

改進

如Temak 所指出的,如果有效資料可能包含空格,則可以將正規表示式模式修改為r'^s $' 以僅匹配包含以下內容的字串完全是空白:

<code class="python">df.replace(r'^\s+$', np.nan, regex=True)</code>
登入後複製

以上是如何在 Pandas 資料框中用 NaN 替換空白值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!