基于现有值的插值,向Pandas数据系列添加时间条目

2024-04-19 01:53:14 发布

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

我有一个年度熊猫数据系列,看起来像:

Year          Price
1940-12-31    33.85
1941-12-31    33.85
1942-12-31    33.85
1943-12-31    33.85
1944-12-31    33.85
1945-12-31    34.71
1946-12-31    34.71
1947-12-31    34.71
1948-12-31    34.71
1949-12-31    31.69
1950-12-31    34.72

我不熟悉pandas数据系列,但我相信日期是一个索引,因为当我打印表时,它说明只有1列。在

我想把它改成monthly,然后根据从一个点到下一个点的线性级数来填充缺失月份的插值数据。例如,这里有一个1949年的样本,其中包括缺失月份和插值:

^{pr2}$

这些1949年内插值的公式是([1949年底价格]-[1948年底价格])/12+上个月的价格

我对熊猫和Python还不太熟悉,如果有人问过我这个问题,请原谅。在


Tags: 数据pandas线性价格yearprice公式插值
1条回答
网友
1楼 · 发布于 2024-04-19 01:53:14

以下代码将完成此任务:

df['Price'].resample('M').interpolate()

将df替换为数据帧的名称。 重采样(“M”)将序列的频率更改为每月。(http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.resample.html

interpolate()默认情况下使用线性插值,这是您想要的,但它有许多其他选项可用。(http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.interpolate.html

假设您有一个用DatetimeIndex正确索引的DataFrame(如果我很好地理解了您的描述,应该是这样的)。你可以通过

^{pr2}$

如果索引设置正确,您将看到如下输出:

DatetimeIndex(['1940-12-31', '1941-12-31', '1942-12-31', '1943-12-31',
           '1944-12-31', '1945-12-31', '1946-12-31', '1947-12-31',
           '1948-12-31', '1949-12-31', '1950-12-31'],
          dtype='datetime64[ns]', freq='A-DEC', tz=None)

相关问题 更多 >