处理缺失值(条件插补)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
我在处理缺失数据时遇到了障碍
我有这个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