特定の日付に関する新しい情報がある場合、データ配列の日付シーケンスと 'x'値が1つの列にあります。Python Pandasインデックス値を選択する列の文字列値を参照する
私はさらに操作のためのデータが
だから私のデータフレームは、このようになっていることを参照することができますので、最新の新しい情報日以前の日付の行のインデックス値を取得したい:
original_df
index date value newinfo
0 '2007-12-01' 75 Nan
1 '2007-12-02' 75 Nan
2 '2007-12-03' 83 x
3 '2007-12-04' 83 Nan
4 '2007-12-05' 83 Nan
5 '2007-12-06' 47 x
6 '2007-12-07' 47 Nan
7 '2007-12-08' 47 Nan
8 '2007-12-09' 47 Nan
だから私は行を参照することに興味があるoriginal_df.index == 4
いくつかの操作のために。
私がそれを行うと考えることができる唯一の方法は、非常に「clunky」です。基本的には、newinfo == 'x'
が最後の行のインデックス値を取り、1を減算し、その値を使用してiloc
を使用して元のデータフレームのその行のさまざまな列にアクセスする行に対してオリジナルのデータをフィルタリングして別のデータフレームを作成します。コードは次のようになります。
interim_df = original_df[original_df['newinfo']=='x']
index_ref_value = interim_df.index[-1] - 1
これは4
のindex_ref_value
を返します。
original_df.iloc[index_ref_value,1]
言い換えれば、私はnewinfo
最新の前に2007-12-05
ためvalue
、一日にアクセスし、次のよう
私はその後、original_df
でvalue
にアクセスすることができます。
これは仕事を完了させますが、私を複雑でぎこちなく感じます。私が探しているindex_ref_valueを見つけるには、よりクリーンで、簡単で、よりPythonの方法がありますか?
それを破壊し、私はあなたの答えの以下のサブセットを走りました'] ==' x '] .index-1'と 'original_df [original_df [' newinfo '] ==' x ']。index-1'(' loc'を持たないことに注意してください)。私は、ここで 'loc'が何をするのかについてはっきりしていません。もう少し説明してください。どうも。 – Windstorm1981
この例の '.loc'は、条件が真であるデータフレームを返します。 '.loc []。* index *'はこの新しいデータフレームのインデックスを返します。これらのインデックスは 'iloc'に渡されるために使用されます – MattR
最新の 'x'日付より前の元のデータフレームのインデックス値を探しているので、あなたの答えは次のように編集する必要があります:' original_df.iloc [ original_df.loc [original_df ['newinfo'] == 'x']。index [-1] -1] '。 (索引の後に '[-1]'を追加することに注意してください)。私はそれを得ましたか? – Windstorm1981