pythonで株価分析を試みている初心者です。
株価の始値、終値、高値、安値を読み込み、その後、columnsを追加して「高値-安値」、「高値ー1日前の終値」、「1日前の終値-安値」の3つを比較して一番大きい数値を抽出したいと考えております。
dfでは、「始値」、「1日前の終値」「終値」、「高値」、「安値」、「高値-安値」、「高値ー1日前の終値」、「日前の終値-安値」の8つcolumns がありますが、このうちの「高値-安値」、「高値ー1日前の終値」、「1日前の終値-安値」の3つのみを比較したいです。
行全体の比較ですとmydf2['Dmax']=mydf2.max(axis=1)のような関数があることまではわかりましたが一部を比較する方法がわからなかったです。
現状では、新しいdfを作成して、mydf2['Dmax']=mydf2.max(axis=1)にて最大値を抽出し、結合することを考えておりますが、1つのdf内でif関数などを使用して実施することができないかアドバイスをいただけますと幸いです。
なお、下記の例は、簡便的に1日前の株価を入れてないです
よろしくお願いいたします。
現状のコード(イメージ)です
コーimport numpy as np import pandas as pd df=pd.DataFrame({'finish':[204,220,250,190,207],'high':[211,240,250,203,208], 'low':[201,208,223,185,199],'start':[207,222,235,200,204]}) #Dの定義 df['D1']=df['high']-df['low'] df['D2']=df['high']-df['finish'] df['D3']=df['finish']-df['start'] #Dの最大値 dfをもう1つ作成した df2=pd.DataFrame(df,columns=['D1','D2','D3']) df2['Dmax']=df2.max(axis=1)
また、dfの中でif 関数を使えないかと考えたのですがうまくいかなかったです。
if 関数のイメージ
if mydf1['D1'] > mydf1['D2'] : if mydf1['D1']>mydf1['D3']: mydf1['Dmax']=mydf1['D1'] else: mydf1['Dmax']=mydf1['D3']# else: if mydf1['D2']>mydf1['D3']: mydf1['Dmax']=mydf1['D2'] else: mydf1['Dmax']=mydf1['D3']
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/06 23:53