Pandas 数据框按日期移动列

2023-12-21

我有一个按日期和 ID 索引的面板数据集,看起来像这样:

df = pd.DataFrame({'Date':['2005-12-31', '2006-03-31', '2006-09-30','2005-12-31', '2006-03-31', '2006-06-30', '2006-09-30'],
              'ID':[1,1,1,2,2,2,2],
              'Value':[14,25,34,23,67,14,46]})

我试图按日期移动相同 ID 的值,并且日期可以是不连续的季度。 groupby.shift 没有给我正确的东西,或者也许我错过了一些东西。这是我所做的:

df['pre_value'] = df.groupby('ID')['Value'].shift(1)

这确实会改变相同 ID 的值,但它会忽略日期...请注意,对于ID==1, the 2006-06-30缺失,因此pre_value为其2006-09-30确实应该是NaN。我还在研究多重索引或将数据集声明为面板,但这使我的其他计算变得复杂。有没有简单的方法可以使用数据框来做到这一点?


我只需复制数据框,然后移动Date1(似乎您想要移动四分之一),然后合并回原始数据框。要移动日期,您可以将字符串日期转换为 pandas 周期,这样移动会更容易。

In [34]: df['Date'] = pd.PeriodIndex(df['Date'], freq='Q')

In [35]: df2 = df.copy()

In [36]: df2['Date'] += 1

In [37]: df.merge(df2, on=['Date','ID'], suffixes=('', '_lag1'), how='left')
Out[37]:
    Date  ID  Value  Value_lag1
0 2005Q4   1     14         NaN
1 2006Q1   1     25          14
2 2006Q3   1     34         NaN
3 2005Q4   2     23         NaN
4 2006Q1   2     67          23
5 2006Q2   2     14          67
6 2006Q3   2     46          14
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pandas 数据框按日期移动列 的相关文章

随机推荐