【问题标题】:How do I subtract two pandas datetime series DataFrames from each other when the index is a datetime?当索引是日期时间时,如何将两个 pandas 日期时间序列 DataFrame 相减?
【发布时间】:2019-01-12 06:55:45
【问题描述】:

我正在尝试将两个 pandas 日期时间序列 DataFrame 的值相减,其中两个 DataFrame 的索引都是日期时间值。

有问题的两个 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 值的 DataFrame:

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

【问题讨论】:

  • 您是否尝试过重命名test 中的列(将列命名为y 中的“价格”)?
  • @Ben.T 我如何重命名日期时间数据帧中的列?
  • 你可以在创建dataframe时做到test如:test = pd.DataFrame(est.predict(X),columns=['price'])
  • @Ben.T,就是这样。要将其标记为答案,以便我可以给您分数吗?
  • 为什么不只减去列,而不是数据框? df.price - test[0]。这将允许您更改 test 的结构并且不依赖于数据帧结构

标签: python pandas datetime dataframe machine-learning


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2017-11-16
    • 2016-02-18
    • 2020-01-16
    • 1970-01-01
    • 1970-01-01
    • 2020-04-30
    • 2022-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多