Pandas数组长度与索引长度不匹配,每周工作但不是每月工作?

时间:2017-04-25 11:54:08

标签: python arrays python-3.x pandas datetime

以下代码无效的原因让我发疯,我希望有人可以帮助我。

我有一些函数 java.util.regex.PatternSyntaxException: Dangling meta character '+' near index 1 |+ ^ at java.util.regex.Pattern.error(Pattern.java:1955) at java.util.regex.Pattern.sequence(Pattern.java:2123) at java.util.regex.Pattern.expr(Pattern.java:1996) at java.util.regex.Pattern.compile(Pattern.java:1696) at java.util.regex.Pattern.<init>(Pattern.java:1351) at java.util.regex.Pattern.compile(Pattern.java:1028) at java.lang.String.replaceAll(String.java:2223) at $anonfun$1.apply(<console>:16) at $anonfun$1.apply(<console>:15) at scala.collection.immutable.List.foreach(List.scala:381) ... 33 elided 要合并的两个数据集的时间索引,并创建传递给下面代码的honey_adj_signals数据帧。 当.resample()数据集的索引.resample()时,此代码运行正常,但当我尝试'W'时,我得到的数据长度14与索引长度15不匹配&# 39;错误作为代码的输出。

我不明白为什么会这样,也不知道如何纠正,我被卡住了。

我已在此处上传了每周数据框:

https://drive.google.com/open?id=0B4xdnV0LFZI1TmRnZllVSW52aWs

这里的月度数据框:

https://drive.google.com/open?id=0B4xdnV0LFZI1WnBSWVBpMzR2MGM

'M'

最终输出应如下所示(这是每周输出的样子)

honey_adj_long_profits = pd.DataFrame({
        "Price": honey_adj_signals.loc[(honey_adj_signals["Signal"] == "Buy") &
                                  honey_adj_signals["Regime"] == 1, "Price"],
        "Profit": pd.Series(honey_adj_signals["Price"] - honey_adj_signals["Price"].shift(1)).loc[
            honey_adj_signals.loc[(honey_adj_signals["Signal"].shift(1) == "Buy") & (honey_adj_signals["Regime"].shift(1) == 1)].index
        ].tolist(),
        "End Date": honey_adj_signals["Price"].loc[
            honey_adj_signals.loc[(honey_adj_signals["Signal"].shift(1) == "Buy") & (honey_adj_signals["Regime"].shift(1) == 1)].index
        ].index
    })
print(honey_adj_long_profits)

1 个答案:

答案 0 :(得分:2)

当我告诉你什么是错的时候,你会踢自己。

在您的每周数据中,您的最后记录是“销售”信号,您处理此信息的方式是成对的。您进入“买入”信号,然后将一个转移到“卖出”记录。

在您的月度数据中,您的上一条记录是“买入”信号,因此当您尝试转移到下一个“卖出”记录时,会发生索引长度错误。为了测试这一点,我删除了月度数据中的最后一条记录并运行了代码。执行没有错误。

我想。