我在处理丢失的数据时遇到障碍
我有这个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
只是逐个关闭小洞的故事
谢谢<<
使用.loc
仅分配插在那里'del'
不为空:
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句