======【追記】======
最終的に実現したいこと
closeの値だけがあるところ(下表左列)に、
「closeの値の当日と前日との差が+、かつ前日と前々日の差も+」の場合'true'、
それ以外の場合が'-'と、右列に'signal'として挿入したいと考えています。
Python
1# close signal 2#0 1807 nan 3#1 1805 nan 4#2 1833 - 5#3 1905 true 6#4 1915 true
==================
困っていること、及び該当のソースコード
以下のようなデータがあったとき(簡略化しています)、
条件にあった場合とそうでない場合を分けてシグナルを出したいと考えています。
Python
1# close 2#0 1807 3#1 1805 4#2 1833 5#3 1905 6#4 1915
最新の数字(上記の場合#4)がその前の数字よりも大きい場合'true'と表示させ、
それ以外は'-'としようと考え、以下のように書いたところ、
Python
1def signal(df): 2 if df['close'].iloc[-1] > df['close'].iloc[-2]: 3 return 'true' 4 else: 5 return '-' 6df['signal'] = df.apply(signal, axis=1)
AttributeError: ("'float' object has no attribute 'iloc'", 'occurred at index 0')
というエラーが表示されました。
df['close'].iloc[-1]単体で呼び出したら正しい数字が抽出されますし、
df['close'].iloc[-1] > df['close'].iloc[-2]も単体だと'true'と表示されたのに、
上記の条件文としたらエラーが表示されてしまう、という状況です。
かつ、エラーの意味がわからず、対処法に困っています。
まだ知識が浅く、理解が間違っていたり、不足していたり、応用が効かない状態のため、
質問の仕方自体もままならず、うまく伝わっていないかもしれませんが、アドバイスいただけると助かります。
お手数おかけしますが、よろしくお願いします。
======【追記】======
いろいろ調べてみたところ、
In: type(df['close'].iloc[-1])
Out: numpy.float64
と表示されており、.ilocで引っ張ってくるのがpandas形式になっていないのが原因のような気がしました。
※他の似たようなプログラムでうまく表示されているもののtypeは「pandas.core.series.Series」と表示されていたため
したがって、この場合、
・df['close'].iloc[-1] > df['close'].iloc[-2] をpandas形式になるように変更する
もしくは、
・df.applyのところで調整する?
ということが考えられるのかなと思いました。
が、その解決方法がわからないため、もしよろしければ、解決法をご教授いただけますと幸いです。まだ不明点等ありましたが、ご指摘ください。よろしくお願いします。

回答1件
あなたの回答
tips
プレビュー