2017-12-30 20 views
0

私の質問を合理化しました。私は入力価格のタイプをフィルタリングするメソッドを作成しようとしています。以下のデータのサンプルである:パンダで空のパラメータを入力する方法.value()function

Open High Low  Close 
1189.73 1214.01 1188.63 1198.72 
1198.67 1201.41 1193.77 1196.35 
1195.69 1203.60 1170.78 1176.45 
1176.47 1185.01 1172.68 1176.65 

adj_price_list = df.values[1:5, [1,2,3,4]].tolist() 

['1189.73', '1214.01', '1188.63', '1198.72'] 
['1198.67', '1201.41', '1193.77', '1196.35'] 
['1195.69', '1203.6', '1170.78', '1176.45'] 
['1176.47', '1185.01', '1172.68', '1176.65'] 

目的:

  • O/H/L/C入力選択をフィルタリングする賢い方法。現在、複数のif-elseステートメントを使用しています。
  • 問題:私はrnsoするには、パラメータ

    adj_price_list = df.values[1:5, [1,4]].tolist() 
    ['1189.73', '1198.72'] #Open and Close prices 
    
    adj_price_list = df.values[1:5, [2,3]].tolist() 
    ['1214.01', '1188.63'] #High and Low prices 
    

として 'なし' を使用することはできません。

def GetList(px_open=True, px_high=True, px_low=True, px_close=True): 
    lst = [px_open, px_high, px_low, px_close] 
    return [(i+1) if lst[i] else None for i in range(4)] 

get_list = GetList(False,True,False,True) #Output: [None, 2, None, 4] 

get_price_list = df.values[1:5, get_list].tolist() 

IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices 
+0

こんにちはColdspeed、助言のおかげで。より具体的にするために私の質問を編集しました。ありがとう! – pappusenpai

+0

良い! Upvoted。もう少し情報が必要です。このデータの期待される出力は? –

+0

質問を完全に変更したのはなぜですか?何か別のものが必要だった 'if-else'ステートメントはどこにありますか?編集内容を追加できますが、元の質問から大幅に削除することはできません。 – rnso

答えて

0

if-else部分の代わりに使用することができ、次のとおりです。

def getlist(px_open=True, px_high=True, px_low=True, px_close=True): 
    lst = [px_open, px_high, px_low, px_close] 
    return [(i+1) if lst[i] else None for i in range(4)] 
+0

こんにちは、アドバイスありがとうございます。あなたの方法を試しましたが、まだエラーが発生しました - 私は上記の私の出力を貼り付けた。あなたのコメントがありがとうございました – pappusenpai

+0

上記のコードはあなたの 'if-else'ステートメントを置き換えるものでした。質問に戻して、コードを修正する方法を示すことができます。現在、 '[None、2、None、4]'の出力で何をしたいのかは分かりません。行番号2と4を取得しますか? – rnso

関連する問題