gpt4 book ai didi

python - 使用 Pandas 插值将每月值转换为每日值

转载 作者:行者123 更新时间:2023-12-02 16:43:27 36 4
gpt4 key购买 nike

我有 12 个 1000 列的平均每月值,我想使用 pandas 将数据转换为每日数据。我曾尝试使用 interplolate 来做到这一点,但我得到了从 31/01/1991 到 31/12/1991 的每日值,这不包括全年。一月份的值(value)没有得到。我使用 date_range 作为我的数据框的索引。

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

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

如何获取 365 天的插值?

最佳答案

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

所以要对全年进行插值,仅仅有只有 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]

关于python - 使用 Pandas 插值将每月值转换为每日值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61095654/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com