首頁 >後端開發 >Python教學 >如何使用前一個或後一個值填入 Pandas DataFrame 中的 NaN 值?

如何使用前一個或後一個值填入 Pandas DataFrame 中的 NaN 值?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-03 11:01:09366瀏覽

How to Fill NaN Values in a Pandas DataFrame with Preceding or Following Values?

用Pandas DataFrame 中的先前或後續值替換NaN

問題

考慮使用NaN 的DataFrame:

In [1]:
import pandas as pd
df = pd.DataFrame([[1, 2, 3], [4, None, None], [None, None, 9]])

In [2]:
df
    0   1   2
0   1   2   3
1   4 NaN NaN
2 NaN NaN   9

目標是將每個NaN 替換為最接近的非NaN其上方同一列中的值。假設第一行不包含 NaN。

答案

實現這一點的有效方法是使用DataFrame 的fillna 方法:

In [3]:
df.fillna(method='ffill')
    0   1   2
0   1   2   3
1   4   2   3
2   4   2   9

fillna 方法採用前向填充(ffill)策略,用最後一個有效觀察值取代NaN

要執行相反的操作,您可以使用 bfill 方法(向後填充):

In [4]:
df.fillna(method='bfill')
    0   1   2
0   1   2   3
1   4   4   3
2   9   9   9

fillna 方法不會就地修改 DataFrame。若要更新原始 DataFrame,請設定 inplace=True:

In [5]:
df.fillna(method='ffill', inplace=True)

In [6]:
df
    0   1   2
0   1   2   3
1   4   2   3
2   4   2   9

以上是如何使用前一個或後一個值填入 Pandas DataFrame 中的 NaN 值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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