【问题标题】:Treat the missing values (conditional Imputation ) Pandas处理缺失值(条件插补) Pandas
【发布时间】:2019-04-04 15:08:02
【问题描述】:

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

我有这个 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

只是按列封闭小洞的故事

谢谢

【问题讨论】:

  • 您的输出中的某些值似乎已关闭。在两个 0.6 值之间进行插值得到 0.7。
  • 这只是一个例子

标签: python pandas numpy interpolation missing-data


【解决方案1】:

使用.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

【讨论】:

  • 我会试试这个
猜你喜欢
  • 1970-01-01
  • 2015-12-13
  • 2018-08-14
  • 2013-07-08
  • 1970-01-01
  • 2020-02-05
  • 2018-05-21
  • 2017-05-04
相关资源
最近更新 更多