我有 1000 列的 12 个平均每月值,我想使用 pandas 将数据转换为每日数据。我尝试过使用插但我得到了从 31/01/1991 到 31/12/1991 的每日值,这并不涵盖全年。一月份的值没有得到。我用了日期范围用于我的数据框的索引。
date=pd.date_range(start="01/01/1991",end="31/12/1991",freq="M")
upsampled=df.resample("D")
interpolated = upsampled.interpolate(method='linear')
如何获得 365 天的插值?
请注意,插值是between已知点。
因此,要对全年进行插值,仅仅有
只是12值(每个月)。
你必须有13值(例如每个月初and明年年初)。
因此我创建了源代码df as:
date = pd.date_range(start='01/01/1991', periods=13, freq='MS')
df = pd.DataFrame({'date': date, 'amount': np.random.randint(100, 200, date.size)})
得到例如:
date amount
0 1991-01-01 113
1 1991-02-01 164
2 1991-03-01 181
3 1991-04-01 164
4 1991-05-01 155
5 1991-06-01 157
6 1991-07-01 118
7 1991-08-01 133
8 1991-09-01 184
9 1991-10-01 183
10 1991-11-01 159
11 1991-12-01 193
12 1992-01-01 163
然后为了将其上采样到每日频率并进行插值,我运行了:
df.set_index('date').resample('D').interpolate()
如果您不希望结果包含最后一行(例如1992年1月1日),
仅取上述结果的一部分,删除最后一行:
df.set_index('date').resample('D').interpolate()[:-1]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)