使用插值将月值转换为日值

2024-09-29 01:27:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我有12个平均每月1000列的值,我想转换成每天使用熊猫数据。我曾尝试使用interpolate进行此操作,但我获得了1991年1月31日至1991年12月31日的每日值,这不包括全年。一月-月份的值无法获取。我使用日期范围作为数据帧的索引

date=pd.date_range(start="01/01/1991",end="31/12/1991",freq="M")

upsampled=df.resample("D")
interpolated = upsampled.interpolate(method='linear')

如何获取365天的插值


Tags: 数据dfdaterangestartmethodendpd
1条回答
网友
1楼 · 发布于 2024-09-29 01:27:05

请注意,插值是在已知点之间进行的

因此,要在全年内进行插值,光有 仅12个值(每个月)。 您必须有13个值(例如,每个月初 明年年初)

因此,我将源df创建为:

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-01-01), 仅获取上述结果的一部分,删除最后一行:

df.set_index('date').resample('D').interpolate()[:-1]

相关问题 更多 >