如何在两个值之间填充 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())
我有一个 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())