データ読込時に消えたゼロを復活!Pandasでデータを修正する方法

データを取り込む際に「ゼロが消えてしまった!」というトラブル、誰もが一度は経験するもの。
先日の記事では、ゼロを消さないための対策を紹介しました。
つまり、前処理です。
┌──────┐ ┌──────┐
前回 今回
────── ─» ───────
前処理 後処理
└──────┘ └──────┘
では、「すでに消えてしまったゼロ」はどうすればいいのでしょうか?
Pandas を使えば、消えたゼロを取り戻す方法もあります。つまり、後対処です。
この記事では、「うっかりゼロが消えてしまった後の対処法」を紹介します!
ただし、あくまで、推奨方法は以下の記事です:
データ読み込み時に指定する方法です。
理由は後述します。
ゼロが消えた後に取り戻す方法
📀データ:
次のように CSV📄 に記載されているとします。
| ID | 郵便番号 | 商品コード |
|---|---|---|
| 00123 | 0456789 | 000456 |
| 00045 | 0123456 | 000789 |
| 01234 | 0012345 | 001234 |
🔽これを普通に読み込むと:
import pandas as pd
# CSVの読み込み
df = pd.read_csv('https://biz-data-analytics.com/pandas-multiple-columns-keep-leading-zeros-11110.csv')📋実行結果:
| ID | 郵便番号 | 商品コード |
|---|---|---|
| 123 | 0456789 | 456 |
| 45 | 0123456 | 789 |
| 1234 | 0012345 | 1234 |
あらら、先頭のゼロが消えてしまいましたね…。😢
解決方法
str.zfill() を使ってゼロを補う:
# 先頭ゼロを復元
df['ID'] = df['ID'].astype(str).str.zfill(5)
df['郵便番号'] = df['郵便番号'].astype(str).str.zfill(7)
df['商品コード'] = df['商品コード'].astype(str).str.zfill(6)📋実行結果:
| ID | 郵便番号 | 商品コード |
|---|---|---|
| 00123 | 0456789 | 000456 |
| 00045 | 0123456 | 000789 |
| 01234 | 0012345 | 001234 |
これでバッチリです! 🎉
✅ コードの解説
df['ID'] = df['ID'].astype(str).str.zfill(5)
1 ───── 2 ──────── 3 ── 4 ────
┌──────────────────────────────┐
- データフレーム(
df)のID列にアクセスして、更新されたデータを上書き astype(str)→ 数値を文字列型に変換str→ 文字列専用メソッドにアクセスするための準備zfill(5)→5桁に満たない場合、先頭にゼロを追加
└──────────────────────────────┘
📋実行結果:
| ID | 郵便番号 | 商品コード |
|---|---|---|
| 00123 | 0456789 | 000456 |
| 00045 | 0123456 | 000789 |
| 01234 | 0012345 | 001234 |
⚠️よくある間違いとその解決策
⚠️⚠️「後で直せばいいや」と考えるのは危険!
データを読み込むときにゼロを消してしまうと、後から補填するには元の桁数を知らなければなりません。
さらに、意図しないゼロが追加されることで、本来のデータの意味が変わってしまいます。
最初から文字列型で読み込むほうが断然ラクです。

これは、データの改ざんに近いリスクを生む可能性があります
まとめ
ゼロが消えてしまっても、Pandas の機能を活用すれば復活させることができます。
ただし、そもそもゼロを消さないようにするのがベストな対策 です。(詳しくは前回の記事を参照)
✅ str.zfill() を活用してゼロを補填する
といった方法を知っておけば、万が一ゼロを消してしまった場合でも対応できます。
データの型を意識して、ゼロを大切に扱っていきましょう! 😊

