Pandasの時系列データのDataFrameにある'value'というカラムで、
その時点から以降の'value'を見て、先に+0.3になれば'up'、−0.3になれば'down'という判定をして、
その結果を新しいカラムに格納したいと思っています。
一応以下のコードでできてはいるのですが、データが大きくなると動かなくなってしまいました。
なのでこれを関数にしてapplyとlambdaで追加しようとしたのですが、失敗しました。(下方の失敗コード)
このあたりの理解が不足していることだけはわかったのですが・・・。
どのように修正すればうまくできますか?
もしくは考え方が違うのかな?とも感じています。
いずれにしてもアドバイスが欲しいので、ヒント(もちろん答えも歓迎)や役立つ解説サイトの紹介など・・・どうぞよろしくお願いいたします!!
●一応動くコード
python
1import pandas as pd 2import numpy as np 3 4check = [] 5for i in range(len(datas['value'])-1): 6 for j in np.arange(i+1,len(datas['value'])): 7 f = datas['value'][j] - datas['value'][i] 8 if f >= 0.3: 9 result = 'up' 10 elif f <= -0.3: 11 result = 'down' 12 else: 13 result = '-' 14 check.append(result) 15check.append('-') 16 17datas['check'] = check 18
●失敗したコード
python
1def func_check(s): 2 for i in range(len(s)-1): 3 for j in np.arange(i+1,len(s)): 4 f = s[j] - s[i] 5 if f >= 0.3: 6 result = 'up' 7 elif f <= -0.3: 8 result = 'down' 9 else: 10 result = '-' 11 return result 12 13 14datas['value'].apply(lambda x: func_check(x)) 15
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。