前提・実現したいこと
if文の中でデータフレームの一行上の値を使って計算がしたいです。
一行前がema_10 > ema_20 > ema_40 > ema_80 > ema_320もしくはその逆ならdropna_df['perfect_order']=1
(dropna_dfとemaの行数は一緒。dropna_dfに'perfect_order'という行はまだ存在していない)
elseも似たような処理をする
データフレームの一行上の値をif条件分岐で使いたい。
回答もしくは修正依頼をお待ちしております。よろしくお願いします。
発生している問題・エラーメッセージ
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
該当のソースコード
一応自分が試してみたソースコードを載せるが見当違いのことをしてると思う。
ema.head() ------------------------------------------------------------------------------------------------------- ema_10 ema_20 ema_40 ema_80 ema_320 time 2001-01-02 23:03:00 114.430000 114.430000 114.430000 114.430000 114.430000 2001-01-02 23:48:00 114.413500 114.414250 114.414625 114.414813 114.414953 2001-01-03 00:03:00 114.408073 114.409017 114.409504 114.409751 114.409938 2001-01-03 00:18:00 114.412002 114.412188 114.412328 114.412410 114.412477 2001-01-03 00:33:00 114.420040 114.418915 114.418429 114.418207 114.418050
ema_count = 0 if ema['ema_10'].shift(1) > ema['ema_20'].shift(1) > ema['ema_40'].shift(1) > ema['ema_80'].shift(1) > ema['ema_320'].shift(1) \ or ema['ema_10'].shift(1) < ema['ema_20'].shift(1) < ema['ema_40'].shift(1) < ema['ema_80'].shift(1) < ema['ema_320'].shift(1): dropna_df['perfect_order'] = 1 else: if ema['ema_10'] > ema['ema_20'] > ema['ema_40'] > ema['ema_80'] > ema['ema_320'] \ or ema['ema_10'] < ema['ema_20'] < ema['ema_40'] < ema['ema_80'] < ema['ema_320']: ema_count += 1 dropna_df['perfect_order'] = 1 else: dropna_df['perfect_order'] = 0
試したこと
そもそもshift()で解決できるのだろうかと思っている。
iterrows()で一行ずつ取り出して処理していったら良いのかなと思い下記のコードでどういう値が取り出せるかを見てみるとタプルが返ってきた。
for row in ema.iterrows(): print(row) break
[Timestamp('2001-01-02 23:03:00'), ema_10 114.43 ema_20 114.43 ema_40 114.43 ema_80 114.43 ema_320 114.43 Name: 2001-01-02 23:03:00, dtype: float64] print(row[0])だと 2001-01-02 23:03:00 print(row[1])だと ema_10 114.43 ema_20 114.43 ema_40 114.43 ema_80 114.43 ema_320 114.43 Name: 2001-01-02 23:03:00, dtype: float64 print(row[2])だと IndexError: tuple index out of range
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/05/22 15:01