[Python]行番号を指定してDataFrameのあるカラムリストを取得する方法

Python プログラミング

こんにちは。kakeです。

今回は、Pythonの備忘録的記事になります。テーマは下記です。

DataFrameにおいて、行番号を指定しつつ、あるカラムのリストを取得する

上記のことをやっていきたいと思います。

スポンサードサーチ

[Python]行番号を指定してDataFrameのあるカラムリストを取得する方法

さて、早速解説をしていきます。まず、ポイントとなるものを先に掴んでおきましょう。下記の通りです。

  • ilocメソッド
  • カラム名の指定
  • .value_counts().index

この3点です。まぁ、見ていきましょう。

ということで、例として下記をご覧ください。

ここから300円という値段の商品名をリストで得たいという場合を考えていきます。一旦流れを確認しておきましょう。下記です。

  • データ読み込み
  • 300円となるものの行番号を取得
  • 行番号リストからilocメソッドを使って商品名を取得
  • .value_counts().indexでリスト化

データの読み込み

まずは、データを読み込みます。

import pandas as pd

df = pd.read_excel('果物.xlsx')
df

これでOKですね。

300円となるものの行番号を取得

df_300 = df[df['値段']=='300円']
df_300.index


indexを指定してあげることで、行番号を取得できています。

行番号リストからilocメソッドを使って商品名を取得

それではilocメソッドを使っていきたいと思います。ilocメソッドの引数には行番号を指定すればOKです。複数ある場合は、リストで入れればOKなので、今回は先ほど得たdf_300.indexを入れます。

df['商品'].iloc[df_300.index]


これで300円のものがわかるようになりました。これをさらにリストで返してもらいましょう。次のステップです。

.value_counts().indexでリスト化

最後にリスト化させましょう。先ほどのコードに.value_counts().indexを追加すればOK。

df['商品'].iloc[df_300.index].value_counts().index


これでOKですね!!!

実は、もっと簡単にできます

実は、もっと簡単にできます。以下のようにやります。

import pandas as pd

df = pd.read_excel('果物.xlsx')
df[df['値段']=='300円']['商品'].value_counts().index


わざわざ行番号は指定しなくてもOKなんです。

とはいえ、この例ならこれでOKというわけで、もっと複雑なものになると上の方法が使えたりします。

というのも、先日、2つのDataFrameを使って、1つのDataFrameからある条件の行番号を指定して、もう1つのDataFrameでその行番号の名前を取得するということがありました。少し複雑なことになってくると、簡単にストレートにできなかったりするので、知っておくといいかもです。

と言っても、ilocメソッドを使うだけなのでなんの問題もないですね。

ということで今回は以上になります。さようならPython!