データ読込時に消えたゼロを復活!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()
を活用してゼロを補填する
といった方法を知っておけば、万が一ゼロを消してしまった場合でも対応できます。
データの型を意識して、ゼロを大切に扱っていきましょう! 😊