[pandas]DataFrameで特定列の抽出(loc)

pandasのDataFrame型でのlocを使った特定列の抽出方法を記載する。

この記事を読んでわかること

  • Pandasでの特定列の取得ができる。
  • Dataframe.locの使い方がわかる。

先にまとめ

※pd = pandas、df=DataFrame型のデータ

やりたいことコード備考
特定の列の抽出(1列)df.loc[ : , ‘列名’ ]列名をそのまま指定する
(返り値はSeries型)
特定の列の抽出(1列)df.loc[ : , [ ‘列名’ ] ]列名をリストで指定する
(返り値はDataFrame型)
特定の列の抽出(複数列)df.loc[ : , [ ‘列名1’, ‘列名2’, … ] ]列名をリストで複数指定する
(返り値はDataFrame型)

↓Udemyもおすすめ。

【Udemy】Python 3.8マスター講座!!0から文法、標準ライブラリ、numpy, pandas, SQLAlchemy

特定列の取得(.loc)

以降のサンプルコードについて、以下のコード実行を前提とする。

import pandas as pd

data_dict = {"Name" : ["Apple","Orange","Lemon"], "Price" : [100,40,90], "Amount" : [5,2,3]}
df = pd.DataFrame(data_dict)

以下のようなデータを使用する。

df

NamePriceAmount
0Apple1005
1Orange402
2Lemon903

特定の列の抽出(1列)

列名を指定することで取得可能。文字列で指定するとSeries型、リストで指定するとDataframe型が返される。

①Dataframe型.loc[ : ,  '列名' ]  # Series型
②Dataframe型.loc[ : ,  ['列名'] ]  # Dataframe型

サンプルコード①

df_price = df.loc[ : , 'Price' ] # Price列を取得

<イメージ>

df.loc[ : , ‘Price’ ]

0100
140
290

<出力結果>

 >>> print(type(df_price))
<class 'pandas.core.series.Series'>
>>> print(df_price)  
0    100
1     40
2     90
Name: Price, dtype: int64

サンプルコード②

df_price = df.loc[ : , ['Price'] ] # Price列を取得

<イメージ>

df.loc[ : , [‘Price’] ]

Price
0100
140
290

<出力結果>

>>> print(type(df_price))
<class 'pandas.core.frame.DataFrame'>
>>> print(df_price)  
   Price
0    100
1     40
2     90

↓Udemyもおすすめ。

【Udemy】データ分析シリーズ? -Pythonライブラリの実践活用-

特定の列の抽出(複数列)

リストで列名を複数指定することで取得可能。リストで指定するとDataframe型が返される

Dataframe型.loc[ : ,  ['列名1', '列名2', ...] ]  # Dataframe型

サンプルコード

df_price_amount = df.loc[ : , ['Price','Amount'] ] # Price列、Amount列を取得

<イメージ>

df.loc[ : , [‘Price’,’Amount’] ]

PriceAmount
01005
1402
2903

<出力結果>

>>> print(type(df_price_amount))
<class 'pandas.core.frame.DataFrame'>
>>> print(df_price_amount)  
   Price  Amount
0    100       5
1     40       2
2     90       3

↓Udemyもおすすめ。

【世界で37万人が受講】データサイエンティストを目指すあなたへ〜データサイエンス25時間ブートキャンプ〜

参考

Pandas公式サイト:pandas.DataFrame.loc

pandas.DataFrame.loc — pandas 2.2.2 documentation