嗨,我有一个巨大的数据帧,结构如下:
ticker calendar-date last-update Assets Ebitda .....
0 a 2001-06-30 2001-09-14 110 1000 .....
1 a 2001-09-30 2002-01-22 0 -8 .....
2 a 2001-09-30 2002-02-01 0 800 .....
3 a 2001-12-30 2002-03-06 120 0 .....
4 b 2001-06-30 2001-09-18 110 0 .....
5 b 2001-06-30 2001-09-27 110 30 .....
6 b 2001-09-30 2002-01-08 140 35 .....
7 b 2001-12-30 2002-03-08 120 40 .....
..
我想要的是针对每一行代码:为每一行创建新的列,其中包含自上一个日历日期(t-1)和最后一个日历日期(t-2)的资产和息税折旧及摊销前利润的变化百分比。在
但问题来了:
1)如您所见,日历日期(按股票代码)并不总是唯一值,因为同一日历日期可能有更多的最后更新,但我总是希望更改自上一个日历日期,而不是从上次更新。在
2)存在值为0的行,在这种情况下,我希望使用上一次观察到的值来计算百分比变化。如果我只有一个股票,这将是容易的,我将只是填写价值,但由于我有许多股票,我不能安全地执行这个操作,因为我可以把股票价格从股票代码'a'填充到股票代码'b',这不是我想要的
我想这可以通过创建一个if语句来处理数据异常的函数来解决,或者在pandas中有一个很好的方法来处理这个问题。。。可能是多重索引??事实上,我不知道如何完成这项任务,有人能帮忙吗?在
谢谢
第1步
sort_values
以确保以后操作的正确顺序第2步
}零和前向填充
^{pr2}$groupby
'ticker'
和{注意:第一个
'Ebitda'
是'b'
,因为没有任何东西可以转发填充。在第3步
groupby
['ticker', 'calendar-date']
并获取最后一列。因为我们在上面排序,最后一行将是最近更新的行。第4步
groupby
,这一次只通过'ticker'
,它在d2
的索引中,取pct_change
第5步
join
返回df
相关问题 更多 >
编程相关推荐