当前,我正在编写脚本以填充时间轴中的缺失值。数据框目前为止看起来不错,值是示例:
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继续
答案 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