处理缺失值(条件插补)Pandas

Treat the missing values (conditional Imputation ) Pandas

我在处理缺失数据时遇到了障碍

我有这个df

index                   a          b     c      del 
2018-06-25 12:51:00    NaN        NaN   NaN      1
2018-06-25 12:52:00    NaN        NaN   NaN     NaN
2018-06-25 12:53:00    NaN        NaN   NaN     NaN 
2018-06-25 12:54:00    NaN        NaN   NaN     NaN 
2018-06-25 12:55:00    NaN        NaN   NaN     NaN
2018-06-25 12:56:00    NaN        NaN   NaN     NaN 
2018-06-25 12:57:00    NaN        NaN   NaN     NaN 
2018-06-25 12:58:00    0.5        0.6   0.6     0.0
2018-06-25 12:59:00    NaN        NaN   NaN     0.0
2018-06-25 13:00:00    0.6        0.8   0.6     0.0
2018-06-25 13:01:00    NaN        NaN   NaN     0.0 
2018-06-25 13:02:00    0.6        0.9   0.6     0.0

我想做什么

如果 del 的值不缺失,则插入缺失值

我有这个解决方案,当 del 有一个值时只保留 df,我在连接后进行插值

但我想避免连接和过多的代码行和变量

dfs= df.loc[df['del'].notnull(),:]
dfs.interpolate(method='time')

dfs1= df.loc[df['del'].isnull(),:]

dfs= pd.concat([dfs,dfs1], axis=1, sort=True,  join_axes=[df.index])

期望的输出:

index                   a          b     c        del 
2018-06-25 12:51:00    NaN        NaN   NaN       1.0
2018-06-25 12:52:00    NaN        NaN   NaN       NaN
2018-06-25 12:53:00    NaN        NaN   NaN       NaN 
2018-06-25 12:54:00    NaN        NaN   NaN       NaN 
2018-06-25 12:55:00    NaN        NaN   NaN       NaN
2018-06-25 12:56:00    NaN        NaN   NaN       NaN 
2018-06-25 12:57:00    NaN        NaN   NaN       NaN 
2018-06-25 12:58:00    0.5        0.6   0.6       0.0
2018-06-25 12:59:00    0.6        0.7   0.7       0.0
2018-06-25 13:00:00    0.6        0.8   0.6       0.0
2018-06-25 13:01:00    0.7        0.9   0.7       0.0 
2018-06-25 13:02:00    0.6        0.9   0.6       0.0

按栏堵小洞的故事

谢谢<<

仅在 'del' 不为空的情况下使用 .loc 分配插值:

df.loc[df['del'].notnull()] = df.loc[df['del'].notnull()].interpolate(method='time')

                        a     b    c  del
2018-06-25 12:51:00   NaN   NaN  NaN  1.0
2018-06-25 12:52:00   NaN   NaN  NaN  NaN
2018-06-25 12:53:00   NaN   NaN  NaN  NaN
2018-06-25 12:54:00   NaN   NaN  NaN  NaN
2018-06-25 12:55:00   NaN   NaN  NaN  NaN
2018-06-25 12:56:00   NaN   NaN  NaN  NaN
2018-06-25 12:57:00   NaN   NaN  NaN  NaN
2018-06-25 12:58:00  0.50  0.60  0.6  0.0
2018-06-25 12:59:00  0.55  0.70  0.6  0.0
2018-06-25 13:00:00  0.60  0.80  0.6  0.0
2018-06-25 13:01:00  0.60  0.85  0.6  0.0
2018-06-25 13:02:00  0.60  0.90  0.6  0.0