Python pandas插值系列

时间:2016-10-10 00:29:21

标签: python pandas interpolation

我在csv文件中有数据,显示为:

  DateTime       Temp
10/1/2016 0:00  20.35491156
10/1/2016 1:00  19.75320845
10/1/2016 4:00  17.62411292
10/1/2016 5:00  18.30190001
10/1/2016 6:00  19.37101638

我正在从csv文件中读取此文件:

import numpy as np
import pandas as pd
d2 = pd.Series.from_csv(r'C:\PowerCurve.csv')
d3 = d2.interpolate(method='time')

我的目标是根据附近的值填充缺失的小时2和3。即每次丢失数据时都应进行插值。

但是,d3不显示任何插值。

编辑: 基于下面的建议,我的Python 2.7仍然出错。我正在尝试以下方法:

import pandas as pd
d2 = pd.Series.from_csv(r'C:\PowerCurve.csv')
d2.set_index('DateTime').resample('H').interpolate()

错误是:

File "C:\Python27\lib\site-packages\pandas\core\generic.py", line 2672, in __getattr__
    return object.__getattribute__(self, name)
AttributeError: 'Series' object has no attribute 'set_index'

2 个答案:

答案 0 :(得分:3)

将resample与datetime一起用作索引,并使用符合您需要的resampling方法之一。例如:

df.set_index('DateTime').resample('1H').pad()
Out[23]: 
                          Temp
DateTime                      
2016-10-01 00:00:00  20.354912
2016-10-01 01:00:00  19.753208
2016-10-01 02:00:00  19.753208
2016-10-01 03:00:00  19.753208
2016-10-01 04:00:00  17.624113
2016-10-01 05:00:00  18.301900
2016-10-01 06:00:00  19.371016

答案 1 :(得分:2)

每小时interpolate之后使用resample方法。

d2.set_index('DateTime').resample('H').interpolate()

如果d2是一个系列,那么我们不需要set_index

d2.resample('H').interpolate()

enter image description here