如何用Pandas每天移动的固定参照物进行计算?

2024-04-25 00:05:34 发布

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

我的数据是盘中股价数据,多天。这是一个简化版本:

                     Last                                                   
2015-01-02 08:30:00  2035.00
2015-01-02 10:30:00  2038.25                    
2015-01-02 15:15:00  2025.25  
2015-01-05 08:30:00  2020.25  
2015-01-05 10:30:00  2010.75                      
2015-01-05 15:15:00  2015.00                  
2015-01-06 08:30:00  1988.00 
2015-01-06 10:30:00  1990.25                     
2015-01-06 15:15:00  1970.00

假设在数据中,每天最后一行是15:15:00,我如何计算每天每行的差值(15:15:00 row-last)。这是期望的输出

                     Last      Dif                                             
2015-01-02 08:30:00  2035.25  -10 
2015-01-02 10:30:00  2038.25  -13                  
2015-01-02 15:15:00  2025.25   0
2015-01-05 08:30:00  2020.25  -5.25
2015-01-05 10:30:00  2010.00   5                   
2015-01-05 15:15:00  2015.00   0               
2015-01-06 08:30:00  1988.00  -18
2015-01-06 10:30:00  1990.25  -20.25                    
2015-01-06 15:15:00  1970.00   0

Tags: 数据版本rowlastdif股价差值
1条回答
网友
1楼 · 发布于 2024-04-25 00:05:34

可以使用^{}by ^{}^{}最后一个值by ^{}和实际行值之间的差值:

print df
                        Last
2015-01-02 08:30:00  2035.25
2015-01-02 10:30:00  2038.25
2015-01-02 15:15:00  2025.25
2015-01-05 08:30:00  2020.25
2015-01-05 10:30:00  2010.00
2015-01-05 15:15:00  2015.00
2015-01-06 08:30:00  1988.00
2015-01-06 10:30:00  1990.25
2015-01-06 15:15:00  1970.00

df['Dif'] = df.groupby(df.index.day)['Last'].apply(lambda x: x.iloc[-1] - x)
print df
                        Last    Dif
2015-01-02 08:30:00  2035.25 -10.00
2015-01-02 10:30:00  2038.25 -13.00
2015-01-02 15:15:00  2025.25   0.00
2015-01-05 08:30:00  2020.25  -5.25
2015-01-05 10:30:00  2010.00   5.00
2015-01-05 15:15:00  2015.00   0.00
2015-01-06 08:30:00  1988.00 -18.00
2015-01-06 10:30:00  1990.25 -20.25
2015-01-06 15:15:00  1970.00   0.00

相关问题 更多 >