【続編】複数列の先頭ゼロを守る!Pandasでのデータ処理方法

Pandasで先頭のゼロを保持する方法 | データが勝手に数値型にならないようにする方法


前回記事(こちら)では、郵便番号や商品コードの先頭ゼロが消えないようにするため、

Pandasで特定の列を文字列型(str)で読み込む方法を紹介しました。

しかし、実務では複数の列に対して同様の処理が必要になる場面も多いですよね。

今回は、その複数列に対する対応方法について解説します!

🔍 複数列を文字列型で読み込むには?

前回の記事で紹介したように、Pandasでは特定の列を文字列型として読み込む際に、以下のように指定しました。

import pandas as pd

# 郵便番号の列を文字列型で読み込む
df = pd.read_csv('https://biz-data-analytics.com/pandas-multiple-columns-keep-leading-zeros-11110.csv', dtype={'郵便番号': str})

📋実行結果:

ID郵便番号商品コード
1230456789456
450123456789
123400123451234

└─────────┬─────────────────────────────┘                                    
          ▼

しかし、実際は、この場合、ID ,商品コード両方の列に対して先頭のゼロを守りたいですよね?

複数列を一度に指定する方法

次のコードが複数列を一度に指定する方法です:

df = pd.read_csv('https://biz-data-analytics.com/pandas-keep-leading-zeros-11074.csv', dtype={'ID':str'郵便番号': str, '商品コード': str})

構文のポイント💡

複数の列を指定する場合は、カンマ(,)で区切るだけ!これは、Pythonの辞書型(dictionary)の書き方と同じですね。

pd.read_csv('CSVファイル名', dtype={'列名1': データの型, '列名2': データの型})

                      ▲
                      │

data type(データ型)の略で、Pandasがデータをどの型として扱うかを指定するための引数

┌┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┐
dtype={"列名1": str, "列名2": int} の右辺は 辞書(dictionary)の記述
キーに列名、値にデータ型(例: strint)を指定
└┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┘

複数の列を指定する場合は、カンマ(,)で区切るだけ!] これは Python の辞書型(dictionary)の書き方と同じ

📋実行結果:

以下が指定されたデータを表形式に変換したものです。

ID郵便番号商品コード
001230456789000456
000450123456000789
012340012345001234

先頭のゼロが完全に守られていることが確認できます!🙌

🔥 全体を文字列型にしたくない場合のベストプラクティス

前回の記事でも紹介しましたが、dtype=str で全体を文字列型にする方法もあります。

しかし、数値として扱いたい列まで文字列になってしまうと、ソートや集計時に誤りが発生する可能性があります。

そのため、必要な列のみを明示的に指定する方法が、実務では一番安全でおすすめです。

🚩 まとめ

  • 複数列に対して先頭ゼロを守るには、dtype パラメータに辞書型を使う。
  • カンマで区切ることで、複数の列を一度に指定可能。
  • 全体を文字列型にするのではなく、必要な列だけを指定するのがベスト。

これで、複数の列の先頭ゼロも安心して守れますね!🛡✨

次回は、Excelへの書き出し時にゼロを維持する方法についても触れていこうと思います。

お楽しみに!