2017-06-16 9 views
2

別のセルに関連してセルの値を取得する最も良い方法は何ですか?Python - Pandas Indexing

私は識別子の下のリストを持っているともcsvファイル(いないデータフレーム)の下に:ファイルの解析中

list = ['ABC0123', 'DEF0123'] 

> Column 1 Column 2 Column 3 Column 4 
> "Date" 20170101 "Identifier" ABC
>"OpenPrice" 500  "Currency"  USD 
>"ClosePrice" 550  "foo"   bar 
> ... 
> ... 
> ... 
> "Date" 20170101 "Identifier" DEF
>"OpenPrice" 600  "Currency"  USD 
>"ClosePrice" 650  "foo"   bar 

私は識別子の終値を取得したい、例えば550と650、 識別子を探して、2を左に、2を左に動かします。

"Close Price"は繰り返していますので、識別子のリストの値を取得したいと考えています。また、ilocとlocは同じ行の値だけを取得するので、値を取得する最も簡単な方法は何ですか?

+0

あなたは形式を変更する機能を持っていますか?日付、識別子、OpenPrice、ClosePrice、通貨などの各タイプのデータに対して1つの列がある場合、各行は完全なレコードになります。 –

+0

最初に、私の質問のフォーマットを手伝ってくれてありがとう、残念ながら、私はあなたが意味することを知っていますが、私は出力を制御することができるよりも私に送られる大きなファイルに取り組んでいます。 – bloo

答えて

1

はのは、試してみましょう:

df.iloc[df[df['Column 4'].isin(list)].index + 2,1] 
+0

は私のために私のループを適用し、調整し、私のデータセットでテストするのに時間がかかりました。どのように、なぜこれがうまくいくのか、私をドキュメントに導くための説明をお願いしますか?これが正しいものかどうかわからないhttps://pandas.pydata.org/pandas-docs/stable/generated/pandas.Index.htmlしかし、それはあまり役立つとは言えません。 – bloo

+0

さてお...社内で仕事をしましょう。 df ['Column 4']がリストにあります。これらの2つのレコードに対してtrueを返します。その後、booleanインデックス選択を使用してレコードを取得し、.indexはインデックスadd 2をこのインデックスに返して行に移動します。今度は、データフレームのインデックス位置を.ilocで指定し、2番目の列を取得します。 –

+0

ありがとう、私はインデックスの行を取得するという考え方のプロセスとは別に、あなたのソリューションの本質はそこから移動する方法を知っていることでしょう。私は前に '+ 2、1'を試していなかった。 – bloo