下面的代碼不工作的原因是讓我瘋了,我希望有人可以幫助我。熊貓數組長度不符合索引長度,工程每週但不是每月?
我有一些函數.resample()
兩個數據的時間索引設置爲合併,創建一個傳遞到下面的代碼honey_adj_signals數據幀。 當我.resample()
數據集的指標與'W'
此代碼工作正常,但是當我嘗試'M'
我得到一個錯誤「數組長度14指數長度15不匹配」根據碼輸出。
我不明白爲什麼會這樣,也沒有如何正確,我卡住了。
我上傳每週數據框的位置:
https://drive.google.com/open?id=0B4xdnV0LFZI1TmRnZllVSW52aWs
,月數據框的位置:
https://drive.google.com/open?id=0B4xdnV0LFZI1WnBSWVBpMzR2MGM
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)
最終的輸出應該是這樣的(這是每週輸出的樣子)
End Date Price Profit
2008-03-09 2008-04-13 78.154000 -0.326000
2008-04-20 2008-05-25 73.822002 -4.990003
2008-06-15 2008-06-29 75.564000 -11.630000
2008-07-20 2008-08-03 57.648001 13.965999
2008-08-31 2008-10-12 57.467999 -23.675999
2008-12-21 2009-01-04 33.970000 -0.047499
2009-01-18 2009-02-08 34.144000 -0.934001
@Scott_Boston,自己踢了兩次。在此之前還添加了以下代碼,因此它是'even'並執行: 'if honey_adj_signals.iloc [-1,2] =='Buy': \t honey_adj_signals = honey_adj_signals.head(n =(len(honey_adj_signals) - 1)) else: \t honey_adj_signals = honey_adj_signals' – SDS
非常漂亮! – MaxU