Python-如何用pandasDataFrame中的先前值替换NaN?

假设我有一个带有NaNs 的DataFrame :

>>> import pandas as pd

>>> df = pd.DataFrame([[1, 2, 3], [4, None, None], [None, None, 9]])

>>> df

0 1 2

0 1 2 3

1 4 NaN NaN

2 NaN NaN 9

我需要做的是用上方的同一列中NaN的第一个非NaN值替换每个值。假设第一行永远不会包含NaN。因此,对于前面的示例,结果将是

   0  1  2

0 1 2 3

1 4 2 3

2 4 2 9

我可以遍历整个DataFrame的逐列,逐元素并直接设置值,但是是否有一种简单的方法(最佳无循环方法)来实现这一点?

回答:

你可以fillnaDataFrame上使用该方法,并将该方法指定为ffill(正向填充):

>>> df = pd.DataFrame([[1, 2, 3], [4, None, None], [None, None, 9]])

>>> df.fillna(method='ffill')

0 1 2

0 1 2 3

1 4 2 3

2 4 2 9

这个方法

将上一个有效观察结果传播到下一个有效观察结果

相反,还有一种bfill方法。

此方法不会就地修改DataFrame-你需要将返回的DataFrame重新绑定到变量,或者指定inplace=True

df.fillna(method='ffill', inplace=True)

以上是 Python-如何用pandasDataFrame中的先前值替换NaN? 的全部内容, 来源链接: utcz.com/qa/436054.html

回到顶部