MENU

pandasでCSVの先頭ゼロを残す|コードを文字列で読む

当ページのリンクには広告(PR)が含まれていることがあります。
pandasでCSVの先頭ゼロを残す|コードを文字列で読む。商品コード、文字列で読む、00123を保持の処理例。

商品コード00123がCSVの読み込みで123になる場合は、列の型を確認します。集計する数量なら数値で構いませんが、商品コードは文字の並びそのものが識別子です。先頭のゼロを消すと、マスターの00123と照合できなくなります。

pandasでは読み込む時点でコード列を文字列に指定します。あとから文字列へ直しても、数値として取り込んだ時点で失われたゼロは戻りません。コードは文字列、数量は数値と列ごとに役割を分けると、その後の集計も追いやすくなります。

目次

コード列だけ文字列にする

次は商品コードと数量だけを持つ架空のCSVです。ファイルを用意せず、StringIOという文字列をファイルのように読む道具で試します。コード列だけにdtypeを指定し、数量列は通常どおり読みます。

from io import StringIO
import pandas as pd

text = "コード,数量\n00123,2\n00007,5\n"
numeric = pd.read_csv(StringIO(text))
items = pd.read_csv(
    StringIO(text),
    dtype={"コード": "string"},
    keep_default_na=False,
)
print("数値で読む:", numeric["コード"].tolist())
print("文字列で読む:", items["コード"].tolist())

saved = items.to_csv(index=False)
restored = pd.read_csv(
    StringIO(saved),
    dtype={"コード": "string"},
    keep_default_na=False,
)
print("再読込:", restored["コード"].tolist())
assert restored["コード"].tolist() == ["00123", "00007"]
assert restored["数量"].sum() == 7

数値として読んだ側は123と7、文字列として読んだ側は00123と00007になります。再保存したCSVも同じ指定で読み戻すと、二つのコードがそのまま残ります。掲載例はWindows・Python 3.12.10・pandas 3.0.2で実行しました。扱ったのは上の架空データです。

実ファイルではStringIO(text)をファイルのパスへ置き換えます。文字コードがUTF-8ならencodingも明示できます。列名が「商品コード」なら、dtypeの辞書のキーも同じ名前へ変えてください。存在しない列名を指定したつもりで先へ進まず、読み込んだ列名と値を一度表示して確認します。

空欄をどの値として扱うか

文字列型を指定しても、欠損値を見つける設定は別に働きます。pandasが欠損と認識するNAなどの文字をコードとして使う場合は、既定の解釈をそのまま使えません。

この例のkeep_default_na=Falseは、その既定の解釈を止めています。空欄も文字として残す設定なので、コードを必須にする業務では別に空文字を検査します。型を指定したことと、入力が正しいことを同じ判断にしないようにします。

数量まで全部文字列にすると、合計する前に数値へ直す処理が必要です。全列を一律に変えるより、照合キーとなる列だけを先に決める方が、誤変換した場所を探しやすくなります。

保存したCSVをExcelで開くとき

CSVにはExcelのセルのような表示形式や列型を保存できません。ファイル内に00123と書いてあっても、Excelが開くときに数値と判断すると123として表示される場合があります。

pandas側の保存結果と、Excel側の取り込み方を分けて確認してください。まず保存したCSVをテキストとして見てゼロが残っているかを確認し、その後にExcelでコード列を文字列として取り込みます。この例ではExcel画面での取り込みは検証していません。

元データが123しか持っていない場合、5桁だから00123にするという処理は業務ルールの追加です。常に5桁なのか、123という別のコードが存在しないかを確かめてから採用します。

CSVの基本操作はpandas入門、数量などの集計はCSVの合計・平均を出す方法で確認できます。

参考資料

列ごとの型と欠損値の設定は、pandas.read_csv公式資料を参照しました。資料確認日は2026年11月1日です。

この記事を書いた人

Watanabeのアバター Watanabe サイト運営者

2020年よりブログ開始。
SEOが思いのほか性にあっていたようで現在に至る。
モットーは「勝率の高い選択をする」
AIは活用するが吉、最後は人間が息を吹き込む。
アートと科学を追求し、日々精進。
―――
収益:6~7桁をウゴウゴ。
サイト:ペラサイト~中規模サイトまで運営中。
案件:1000円以上の案件をメインに取組中。
打ち手:ブラックSEO~ホワイトSEOまで
―――

目次