Help us understand the problem. What is going on with this article?

pandasのデータフレーム/シリーズ中の条件に一致した項目のインデックスを求める

More than 3 years have passed since last update.

概要

pandasのデータフレームorシリーズから、条件に一致した項目のインデックスを返す方法を紹介します。

結論

df.ix[[df.ix[:,0] == "hoge"],:].index[0]

解説

おさらい

df.ix[[df.ix[:,0] == "hoge"],:]

といった構文はご存知かと思いますが、ここでは、純粋にインデックスを返す方法を記したいと思います。
ちなみに、上の構文は「0列目が"hoge"の行を返す」という意味です。

本編

上の結果はpandasのデータフレームorシリーズで返されます(データフレームを参照しているならデータフレーム、シリーズを参照しているならシリーズ)。

#データフレーム
df.ix[[df.ix[:,0] == "hoge"],:] 
#最外側のixで列を:としているため複数列指定になるので、結果はデータフレームで返ります

ここで、

df.ix[[df.ix[:,0] == "hoge"],:].index

としてみると、条件に合致したデータフレームのインデックスがそのまま返されます。複数の項目が条件と合致していれば大きさが1より大きいシリーズが返ってきます。

そこで、

df.ix[[df.ix[:,0] == "hoge"],:].index[0]

とすると、Pythonでそのまま扱える形式でインデックスが取れます。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away