[Python]行番号を指定してDataFrameのあるカラムリストを取得する方法
こんにちは。kakeです。
今回は、Pythonの備忘録的記事になります。テーマは下記です。
上記のことをやっていきたいと思います。
スポンサードサーチ
[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
実は、もっと簡単にできます
実は、もっと簡単にできます。以下のようにやります。
import pandas as pd
df = pd.read_excel('果物.xlsx')
df[df['値段']=='300円']['商品'].value_counts().index
というのも、先日、2つのDataFrameを使って、1つのDataFrameからある条件の行番号を指定して、もう1つのDataFrameでその行番号の名前を取得するということがありました。少し複雑なことになってくると、簡単にストレートにできなかったりするので、知っておくといいかもです。
ということで今回は以上になります。さようならPython!