【问题标题】:How to make a calculation with a fixed reference that shifts every day in Pandas?如何使用 Pandas 中每天变化的固定参考进行计算?
【发布时间】:2016-07-01 08:07:06
【问题描述】:

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

                     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

【问题讨论】:

    标签: python pandas time-series dataframe


    【解决方案1】:

    您可以使用groupby by DatetimeIndex.dayapply 最后一个值 by iloc 与实际行值之间的差异:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多