用当前频率的整数倍对pandas数据帧进行采样



我需要对一个数据帧进行上采样,使当前索引之间(大致)间隔均匀的整数步长(开始时间隔均匀)。具体来说,我有年度数据,我想重新采样,以便每一行之间有14行间隔。这些将在稍后用插值填充。

下面是一个示例数据框架来更好地说明这个问题:

              A           B         C
1980-01-01    0    1.000000 -0.871623
1981-01-01   25    3.162278 -0.186602
etc...

我想要的是一个重新采样的方法这样我就能得到这样的结果

              A           B         C
1980-01-01    0    1.000000 -0.871623
1980-02-01  NaN         NaN       NaN
1980-03-01  NaN         NaN       NaN
1980-04-01  NaN         NaN       NaN
1980-05-01  NaN         NaN       NaN
1980-06-01  NaN         NaN       NaN
1980-07-01  NaN         NaN       NaN
1980-08-01  NaN         NaN       NaN
1980-09-01  NaN         NaN       NaN
1980-10-01  NaN         NaN       NaN
1980-11-01  NaN         NaN       NaN
1980-12-01  NaN         NaN       NaN
1981-01-01   25    3.162278 -0.186602

但是用日期将一年大致均匀地划分为15个间隔(而不是像这种情况那样受限于熊猫频率)。

我想出了一个有效的解决方案,只要你不介意从日期时间格式转换索引。我确信它可以转换回日期时间格式,但在我的情况下,这是不必要的。下面是该过程的一个示例(假设您有一个具有datetime索引的数据框df):

n_intervals = 15
delta       = 1.0 / n_intervals
base_index  = df.index.year
df.index    = base_index
new_index   = np.arange(base_index.min(), base_index.max()+delta, delta)
df = df.reindex(new_index, tolerance=0.000001, method='nearest')
df.interpolate('cubic', inplace=True)

最新更新