Python使用其他数据填充缺失值

时间:2018-12-05 20:59:15

标签: python pandas

当前,我正在编写脚本以填充时间轴中的缺失值。数据框目前为止看起来不错,值是示例:

timestamp   id  value
2016-01-01 01:00:00 1   10
2016-01-01 02:00:00 1   15
2016-01-01 03:00:00 1   12
2016-01-01 04:00:00 1   NAN
2016-01-01 05:00:00 1   NAN
2016-01-01 06:00:00 1   7
2016-01-01 07:00:00 1   9
2016-01-01 01:00:00 2   10
2016-01-01 02:00:00 2   12
2016-01-01 03:00:00 2   14
2016-01-01 04:00:00 2   16
2016-01-01 05:00:00 2   8
2016-01-01 06:00:00 2   11
2016-01-01 07:00:00 2   14
2016-01-01 01:00:00 3   10
2016-01-01 02:00:00 3   12
2016-01-01 03:00:00 3   14
2016-01-01 04:00:00 3   12
2016-01-01 05:00:00 3   8
2016-01-01 06:00:00 3   9
2016-01-01 07:00:00 3   12

我想通过查看其他对象值的升高来填充NAN值。 因此,例如,如果对象id 2和3从3:00:00到4:00:00平均上升50%,我可以在此示例中使用值12并将其乘以1.5。我目前正在使用pandas在python中工作。

我可以通过“值”列运行一个函数,检查其是否为NAN。但是我有点卡住了从那里去的方法。

基本上我想要一个函数,当它找到一个缺少的值作为时间戳时,然后为该时间戳找到其他对象的值。因此,在此示例中,它在4:00:00丢失的数据将捕获对象2的16和对象3的12。一旦完成,它将比较找到的值与该时间戳之前的值并除以该值。所以16/14和12/14。这个的平均值是1,我想乘以缺失值之前的值。所以1.00 * 12.00。然后它将在4:00:00填写时间戳,并在5:00:00继续

1 个答案:

答案 0 :(得分:1)

您可能需要做些小调整以确保熊猫正确看到您的NaN。

"""
timestamp,id,value
2016-01-01 01:00:00,1,10
2016-01-01 02:00:00,1,15
2016-01-01 03:00:00,1,12
2016-01-01 04:00:00,1,nan
2016-01-01 05:00:00,1,nan
2016-01-01 06:00:00,1,7
"""

import pandas as pd
import numpy as np

df = pd.read_clipboard(sep=",")
df.value = df.value.astype(float)
df.interpolate(method="linear")

返回:

0    10.000000
1    15.000000
2    12.000000
3    10.333333
4     8.666667
5     7.000000
Name: value, dtype: float64