Pandas使用新长度插入数据帧

时间:2016-08-03 21:43:58

标签: python pandas linear-interpolation

我有一个包含Datetime,lat,lon,z列的数据框。我正在从csv文件中读取数据,因此设置日期时间段不起作用。时间间隔为6小时,但我希望按小时间隔线性插入数据。

开始
       'A'              'B'    'C'   'D'
0   2010-09-13 18:00:00 16.3 -78.5    1
1   2010-09-14 00:00:00 16.6 -79.8    6 
2   2010-09-14 06:00:00 17.0 -81.1    12

       'A'              'B'    'C'   'D'
1   2010-09-13 18:00:00 16.3  -78.5   1      
2   2010-09-13 19:00:00 16.35 -78.7   2
3   2010-09-13 20:00:00 16.4  -78.9   3
4   2010-09-13 21:00:00 16.45 -79.1   4
5   2010-09-13 22:00:00 16.5  -79.3   5
....

我尝试过使用interpolate命令,但是对于新的数据帧长度没有参数。

df.interpolate(method='linear')

我原以为我可以使用.loc在数据框的每一行之间包含5行NAN,然后使用插值函数,但这似乎是一个不好的解决方法。

解决方案 如果您的初始列未导入为datetime,则使用DatetimeIndex可以消除与其他列的关联。

i = pd.DatetimeIndex(start=df['A'].min(), end=df['A'].max(),    freq='H')
df = df.reindex(i).interpolate()
print(df)

给出正确答案。

1 个答案:

答案 0 :(得分:1)

i = pd.DatetimeIndex(start=df.index.min(), end=df.index.max(), freq='H')
df = df.reindex(i).interpolate()
print(df)

输出

2010-09-13 18:00:00  16.300000 -78.500000
2010-09-13 19:00:00  16.350000 -78.716667
2010-09-13 20:00:00  16.400000 -78.933333
2010-09-13 21:00:00  16.450000 -79.150000
2010-09-13 22:00:00  16.500000 -79.366667
  1. 使用DatetimeIndexdocs)创建具有所需频率的新索引。

  2. reindexdocs)这个新索引。默认情况下,新索引的值为np.nan

  3. interpolatedocs)填写这些缺失的值。您可以提供method kwarg来确定插值的完成方式。