【问题标题】:upsampling timeseries from daily to hourly从每天到每小时上采样时间序列
【发布时间】:2021-07-02 16:13:58
【问题描述】:

我正在使用以下数据,该数据保存在 CSV 文件中,并尝试使用线性插值将其转换为每小时。但是,没有成功。

代码:

import pandas as pd
df = pd.read_csv('d:/Python/resampling/FairyLake.csv')
df[ 'Date' ] = pd.to_datetime(df['Date'])
df.set_index('Date').resample('M').interpolate()
print(df)

数据

Date,Discharge
1/3/2008,0.05865
1/4/2008,0.105812
1/5/2008,0.191388
1/6/2008,0.315378
1/7/2008,0.477782
1/8/2008,0.6786
1/9/2008,0.917832
1/10/2008,0.783875701
1/11/2008,0.65678957
1/12/2008,0.545651187
1/13/2008,0.44222808
1/14/2008,0.353907613
1/15/2008,0.27414753

结果

 Date  Discharge
0  2008-01-03   0.058650
1  2008-01-04   0.105812
2  2008-01-05   0.191388
3  2008-01-06   0.315378
4  2008-01-07   0.477782
5  2008-01-08   0.678600
6  2008-01-09   0.917832
7  2008-01-10   0.783876
8  2008-01-11   0.656790
9  2008-01-12   0.545651
10 2008-01-13   0.442228
11 2008-01-14   0.353908
12 2008-01-15   0.274148

【问题讨论】:

    标签: pandas interpolation resampling


    【解决方案1】:

    两件事:

    1. resample interpolate 应该是每小时一次 (H)
    2. 需要将结果分配回df = ...:
    df['Date'] = pd.to_datetime(df['Date'])
    df = df.set_index('Date').resample('H').interpolate()
    

    df:

                         Discharge
    Date                          
    2008-01-03 00:00:00   0.058650
    2008-01-03 01:00:00   0.060615
    2008-01-03 02:00:00   0.062580
    2008-01-03 03:00:00   0.064545
    2008-01-03 04:00:00   0.066510
    ...                        ...
    2008-01-14 20:00:00   0.287441
    2008-01-14 21:00:00   0.284118
    2008-01-14 22:00:00   0.280794
    2008-01-14 23:00:00   0.277471
    2008-01-15 00:00:00   0.274148
    

    【讨论】:

      猜你喜欢
      • 2013-04-29
      • 1970-01-01
      • 1970-01-01
      • 2012-12-25
      • 2019-08-31
      • 2015-08-10
      • 1970-01-01
      • 2021-03-22
      • 2020-11-09
      相关资源
      最近更新 更多