当索引是日期时间时,如何相互减去两个熊猫日期时间序列数据帧?

时间:2018-08-04 18:40:58

标签: python pandas datetime dataframe machine-learning

我正在尝试相互减去两个熊猫datetime系列DataFrame的值,其中两个DataFrames的索引都是datetime值。

所讨论的两个DataFrame具有相同数量的列。我想从第一个DataFrame的列的值中减去第二个DataFrame的列中的值,以使用第二个DataFrame中表示的列的新减去值创建一个新的DataFrame。

这是我的数据:

import pandas as pd
import numpy as np
import statsmodels.api as sm

In[]: y
Out[]:            price
        Date
     2010-08-29   .0648
     2010-08-30   .0751
               ...
    2897 rows × 1 columns

In[]: type(y)
Out[]: pandas.core.frame.DataFrame

这些是我想从上面的y值中减去的值:

In[]: test = pd.DataFrame(est.predict(X))
      test
Out[]:                     0

         2010-08-29    -5.851237
         2010-08-30    -6.835347
         2010-08-31    -9.949124
                   ...
          2897 rows × 1 columns

当我尝试对以上数据进行pd.sub()操作时,我将返回一个包含NaN值的数据框,如下所示:

In[]: vals = y.sub(test)
      vals 
Out[]:                price    0    
           Date
        2010-08-29     NaN    NaN
        2010-08-30     NaN    NaN
                   ...
         2897 rows × 2 columns

如何从两列中减去值以得到输出,例如下面的输出?

1      1.544535
2     -1.945362
3     -3.037018
4      0.882884
    ...
Name: newFrame, Length: 200, dtype: float64

1 个答案:

答案 0 :(得分:2)

如果列具有相同的名称,则在两个数据框之间使用sub将起作用,因此,例如,在此处,通过以下方式创建数据框test

test = pd.DataFrame(est.predict(X),columns=['price'])