gpt4 book ai didi

python - 如何用 pandas DataFrame 中的前一个或下一个值替换 NaN?

转载 作者:IT老高 更新时间:2023-10-28 21:11:47 27 4
gpt4 key购买 nike

假设我有一个带有一些 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 并直接设置值,但有没有一种简单(最好是无循环)的方法来实现这一点?

最佳答案

您可以使用 fillna DataFrame 上的方法并将方法指定为 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

这个方法……

propagate[s] last valid observation forward to next valid

相反,还有一个 bfill 方法。

此方法不会就地修改 DataFrame - 您需要将返回的 DataFrame 重新绑定(bind)到变量或指定 inplace=True:

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

关于python - 如何用 pandas DataFrame 中的前一个或下一个值替换 NaN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27905295/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com