Python × Excel

PythonでExcelのVLOOKUP関数の操作を行う方法

2020-10-15

python-excel-vlookup

本記事では、PythonでExcel のVLOOKUP関数の操作を行う方法をご紹介します。

Pythonの実行環境

今回は、以下の実行環境でプログラムを実行しています。

・Python 3.7.6
・Jupyterlab 1.2.6
・Pandas:1.1.2

テストデータは、次のような予算管理表を使います。

ファイル名は「テストデータ.xlsx」で、シート名は「予算管理表」と「担当者マスタ」です。

■予算管理表

レコード数:11、列数:10

テストデータ

■担当者マスタ

担当者マスタ

 

本記事で、今回利用するライブラリはPandasです。

import pandas as pd

※本記事では、Pythonのコードの下のコメントアウトは、出力結果を示しています。

 

PythonでExcelのVLOOKUP関数の操作を行う方法

今回の例だと、Excelだと、'担当者コード'の列で次のようにvlookup関数を使えるますよね。

vlookup

 

まずは、2つのシートを読み込みます。予算管理表をdf、担当者マスタをdf_userとします。

df = pd.read_excel('テストデータ.xlsx', sheet_name = '予算管理表')
df_user = pd.read_excel('テストデータ.xlsx', sheet_name = '担当者マスタ')

 

次に、読み込んだ2つの表を次のように結合します。

df = df.merge(df_user, on='担当者コード', how='left')

 

on='担当者コード'キーをとなる列を指定します。列名が異なる場合は、left_onright_onに分けて指定します。

how='left'は、結合の仕方を指定していますが、vlookupの場合は、mergeの左の表をベースにするからleftとすると覚えていれば問題ないです。

この結果は、次の通りになります。一番右の列に担当者名が追加されました。

vlookup結果

確認のため、行数と列数を確認すると、11行、11列の表になり、列が1つ追加になったのがわかります。

df.shape
#(11, 11)

 

PythonでExcelのVLOOKUP関数の操作を行う際の注意点

ここで、PythonでVLOOKUP的な操作を行うときの留意点を1つ紹介します。

「マスタ側の表でキーとなる列は一意にすべき」ということです。

 

例として、キーとなる列が一意でないマスタで処理を行ってみます。

担当者コードの「A00001」が重複しています。

担当者マスタ2

 

この表を「テストデータ_2.xlsx」とします。

上の処理と同様に、Excelを読み込んで、VLOOKUP的な処理を行います。

df2 = pd.read_excel('テストデータ_2.xlsx', sheet_name = '予算管理表')
df_user2 = pd.read_excel('テストデータ_2.xlsx', sheet_name = '担当者マスタ')
df2 = df2.merge(df_user2, on='担当者コード', how='left')

結果は、次の通りとなります。

vlookup結果2

 

df.shape
#(15, 11)

ご覧の通り、マスタで重複していた分だけレコードが増えています。

 

マスタのキー列に重複する値があるのを知らずに、マージすると誤って集計してしまうこともあります。

 

ぜひ、Pythonのmerge関数を使う時は、マスタとなる表のキーが一意であることを確認してください。

 

以上、PythonでExcelのVLOOKUP関数の操作を行う方法を留意点とともに説明してきました。

最後まで読んでいただき、ありがとうございました。

よく読まれている記事

se-shikaku 1

  社内SEになるには資格って必要?社内SEでキャリアップするときにおすすめの資格は? 回答としては、 社内SEは、対人スキル、実務での対応力や最新情 ...

社内SEの仕事内容 2

  社内SEってどんな仕事なんだろ~ 検索しても転職サイトの記事ばかりでよく分からない・・   確かにそうですね。。実経験を基に、社内SE( ...

side-work-trial 3

  コロナで会社の経営も不安。。個人でお金稼ぎたいな~ 今、こう考えるサラリーマン、OLの方はごまんといると思います。   僕は、本業では社 ...

adsense-pass 4

【3記事で一発合格】Google AdSense申請に合格したブログ情報 こんにちは、いなサラ(@いなサラ|田舎の情シスサラリーマン)です。 2019年10月5 ...

-Python × Excel

© 2020 inasala note