假设我有一个包含多列和时间序列索引的数据框。
对于其中一列,我需要在非NaN值之前立即用另一列中的值替换NaN。
为了说明这一点,请参阅下面的
2003-10-24 02:00:00 NaN
2003-10-24 03:00:00 NaN
2003-10-24 04:00:00 0.001
2003-10-24 05:00:00 NaN
2003-10-24 06:00:00 NaN
2003-10-24 07:00:00 0.006
2003-10-24 08:00:00 NaN
2003-10-24 09:00:00 NaN
2003-10-24 10:00:00 NaN
2003-10-24 11:00:00 0.004
会变成
2003-10-24 02:00:00 NaN
2003-10-24 03:00:00 0.002
2003-10-24 04:00:00 0.001
2003-10-24 05:00:00 NaN
2003-10-24 06:00:00 0.001
2003-10-24 07:00:00 0.006
2003-10-24 08:00:00 NaN
2003-10-24 09:00:00 NaN
2003-10-24 10:00:00 0.003
2003-10-24 11:00:00 0.004
例如,具有替换数据的列是
2003-10-24 02:00:00 0.001
2003-10-24 03:00:00 0.002
2003-10-24 04:00:00 0.001
2003-10-24 05:00:00 0.015
2003-10-24 06:00:00 0.001
2003-10-24 07:00:00 0.006
2003-10-24 08:00:00 0.005
2003-10-24 09:00:00 0.002
2003-10-24 10:00:00 0.003
2003-10-24 11:00:00 0.004
感谢任何帮助。
答案 0 :(得分:2)
这不是世界上最漂亮的方法,但这里有。首先找到所需数据替换ind
的整数索引。在以下示例中,我将df["col1"]
的值替换为df["col2"]
import numpy as np
ind = np.where( df.col1.isnull() & df.col1.shift(-1).notnull() )
df.loc[df.index[ind], "col1"] = df.loc[df.index[ind], "col2"]
这是你想要的吗?