本記事では、PythonでExcel の置換操作、条件分岐ありの置換操作を行う方法をご紹介します。
Pythonの実行環境
今回は、以下の実行環境でプログラムを実行しています。
・Python 3.7.6
・Jupyterlab 1.2.6
・Pandas:1.1.2
テストデータは、次のような予算管理表を使います。
ファイル名は「テストデータ.xlsx」で、シート名は「予算管理表」です。
■予算管理表
本記事で、利用するライブラリはPandasです。
そして、テストデータの予算管理表をdfとして読み込んでおきます。
import pandas as pd
df = pd.read_excel('テストデータ.xlsx', sheet_name = '予算管理表')
※本記事では、Pythonのコードの下のコメントアウトは、出力結果を示しています。
PythonでExcelの置換の操作を行う方法(完全一致の置換)
Excelの場合は、ctrl + H (command + H)で、よく置換って使いますよね。
Pythonではどのようにやるのかをご紹介します。
まずは、置換元の文字列を完全一致でしていして置換する方法です。
テストデータの例だと、「費目1」列の '1-消耗品費' を '5-消耗品費' とするように全文字列を指定する方法です。
df = df.replace('1-消耗品費', '5-消耗品費')
これは、replace()を使い、1つ目の引数に置換前の文字列、2つ目に置換後の文字列を指定します。
ご覧の通り、消耗品の番号が1から5に変更されました。
この場合だと、表全体が置換対象となって、置換されます。
もし、置換対象を特定の列に絞りたい時は、次のように書きます。
df['費目1'] = df['費目1'].replace('1-消耗品費', '5-消耗品費')
これによって、「費目1」列のみが置換対象となります。
今回の場合は、'1-消耗品費' という文字列が「費目1」列にしかないため、上の結果と同じになります。
PythonでExcelの置換の操作を行う方法(部分一致の置換)
次は、文字列の中で部分的にある文字列に該当するものを別の文字列に置き換える方法をご紹介します。
例として、「件名」列の '販売システムの構築' の中の '販売システム' を'販売管理システム' に置き換えるのをみていきます。
これは、apply関数とLambda関数を組み合わせて、replace() を使います。
df['件名'] = df['件名'].apply(lambda x: x.replace('販売システム', '販売管理システム'))
結果は、次のとおりになり、文字列が置き換わっていることが分かります。
Pythonで条件分岐ありの置換を行う方法
最後に、条件分岐ありの置換を行う方法をご紹介します。
条件分岐ありの置換とは、テストデータの「2021年度」列で、金額が0以外の値を1に置換するというものです。
条件分岐:金額が0以外 → 1 に置換する
といった感じです。
金額が0から1以上かでフラグ的な意味合いになります。
これは、それほど頻繁には使わないかもしれませんが、頭の片隅に覚えておいて損はないと思います。
Pythonでは、where()を使います。
df['2021年度'] = df['2021年度'].where(df['2021年度']==0, 1)
whereの1つ目の引数に条件式、2つ目に条件式がFalseの時の置換後の値をいれます。
2つ目は、条件がFalseの場合の値ということが、間違えやすいのでぜひ注意しましょう。
結果は、次の通りとなります。条件にしたがって、ちゃんと置換されています。
以上、PythonでExcelの置換操作や条件分岐ありの置換の方法を説明してきました。
最後まで読んでいただき、ありがとうございました。