如何在两个值之间填充 NaN 值?

How to fill NaN values between two values?

我有一个 dataframe 如下所示。我想用 NaN 值之间的值填充两个现有值之间的 NaN 值,而不是现有值两边的值。

time_expanded    start_time    end_time    name
10:30:00         NaN           NaN         NaN
10:30:10         10:30:10      10:30:40    11v11
10:30:20         NaN           NaN         NaN
10:30:30         NaN           NaN         NaN
10:30:40         10:30:10      10:30:40    11v11
10:30:50         NaN           NaN         NaN
10:31:00         10:31:00      10:31:20    zonal_game
10:31:10         NaN           NaN         NaN
10:31:20         10:31:00      10:31:20    zonal_game
10:31:30         NaN           NaN         NaN

预期输出:

time_expanded    start_time    end_time    name
10:30:00         NaN           NaN         NaN
10:30:10         10:30:10      10:30:40    11v11
10:30:20         10:30:10      10:30:40    11v11
10:30:30         10:30:10      10:30:40    11v11
10:30:40         10:30:10      10:30:40    11v11
10:30:50         NaN           NaN         NaN
10:31:00         10:31:00      10:31:20    zonal_game
10:31:10         10:31:00      10:31:20    zonal_game
10:31:20         10:31:00      10:31:20    zonal_game
10:31:30         NaN           NaN         NaN

你如何做到这一点?

非常感谢任何帮助!

您可以使用 ffill,但只能保留 ffill 等于 bfill 的值:

df.ffill().where(df.ffill() == df.bfill())

  time_expanded start_time  end_time        name
0      10:30:00        NaN       NaN         NaN
1      10:30:10   10:30:10  10:30:40       11v11
2      10:30:20   10:30:10  10:30:40       11v11
3      10:30:30   10:30:10  10:30:40       11v11
4      10:30:40   10:30:10  10:30:40       11v11
5      10:30:50        NaN       NaN         NaN
6      10:31:00   10:31:00  10:31:20  zonal_game
7      10:31:10   10:31:00  10:31:20  zonal_game
8      10:31:20   10:31:00  10:31:20  zonal_game
9      10:31:30        NaN       NaN         NaN

或者反过来:

df.bfill().where(df.ffill() == df.bfill())