我有一个缺少时间戳的面板数据集,其中包括数据框中某些标识的值。
Index Identiy Value
2015-01-01 A 13
2017-01-01 A 14
2018-01-01 A 24
2019-01-01 A 30
2015-01-01 B 10
2016-01-01 B 12
2017-01-01 B 18
2018-01-01 B 25
2019-01-01 B 30
如何自动检查是否缺少某些时间戳(间隙),然后使用插值创建一行。更简单,如何在数据框中添加以下信息。
Index Identity Value
2016-0101 A 13,5 (Interpolated between the gap (13,5)
这只能对缺失少于6个点的缺口进行。
我了解插值函数,但不幸的是无法将其放入行的创建中。 有人可以帮忙吗?
答案 0 :(得分:1)
每年将GroupBy
与resample
一起使用,因此我们将根据Identity
然后是interpolate
将缺失的年份添加到数据中,最后将索引设置为pd.offsets.YearBegin
:
dfn = df.groupby('Identiy').apply(lambda x: x.resample('Y').first().interpolate(limit=5).ffill())
dfn.index = dfn.index.droplevel(0) - pd.offsets.YearBegin()
Identiy Value
2015-01-01 A 13.0
2016-01-01 A 13.5
2017-01-01 A 14.0
2018-01-01 A 24.0
2019-01-01 A 30.0
2015-01-01 B 10.0
2016-01-01 B 12.0
2017-01-01 B 18.0
2018-01-01 B 25.0
2019-01-01 B 30.0