CSVGuide2026-10-12

pandasでCSVの00123を123にしない。dtypeでID列を文字列に固定する

約5分で読めます

こんな人向けPythonとpandasでCSVを読み込み、IDやSKUを扱う人
難易度入門

pandas.read_csvで社員IDやSKUの先頭0を保持したいときに、dtypeで対象列をstrとして読み、数値推論による変換を避ける基本形を整理します。

目次を開く

CSVに 00123 と入っていても、pandasが数値列だと推論すれば、後工程で 123 として扱われることがあります。社員ID、SKU、郵便番号のような値は計算する数字ではなく識別子なので、読み込み時に型を決める方が安全です。

dtypeで対象列をstrにする

read_csv には列ごとの型を指定する dtype があります。

import pandas as pd

df = pd.read_csv("users.csv", dtype={"employee_id": str})

これで employee_id を数値ではなく文字列として扱えます。

読み込んだ直後に値と型を確認する

画面表示だけではなく、先頭数件とdtypeを確認します。

print(df["employee_id"].head().tolist())
print(df.dtypes)

期待値が ["00123", "00456"] なら、そのまま保持できているかをここで確認できます。

pandasでID列をdtype strとして読む流れ

書き出す前にも型を再確認する

途中で数値演算や結合をした結果、型が変わることもあります。to_csv の直前でID列を再確認し、原本CSVも残しておきます。

構造上の列数不一致、ヘッダー重複、引用符崩れをPython処理前に見るなら、CSV Preflightを前段に置けます。

本番投入前の最終チェック

原本、読み込み条件、出力CSVを分けて保存し、代表IDを前後比較します。先頭0を守れても、別列の欠損値変換や型推論で値が変わっていないかも確認します。

  • dtype をコードに残した
  • 代表IDの前後一致を確認した
  • 行数が変わっていない
  • 出力直前のdtypeを確認した
  • 元CSVを保存した

読めたことではなく、識別子が同じ文字列で残ったことを完了条件にします。

NEXT

次に読む。

CSV / Guide

Excelで16桁以上のIDを開くと末尾が変わる。数値にしないのが先

約5分

Excelが16桁以上の数値文字列を15桁精度で扱い、末尾を変えることがある問題を、テキスト型として取り込む方法で防ぎます。

CSV / Guide

pandasで列数が壊れたCSVを黙って捨てない。on_bad_linesを決める

約5分

pandas.read_csvで列数不一致の行に遭遇したとき、on_bad_linesの方針を明示し、欠損したレコードに気づかないまま処理を続けるのを防ぎます。

CSV / Guide

pandasで「NA」が欠損値になる。商品コードを消す前にkeep_default_naを見る

約5分

pandas.read_csvがNAやNULLなどを欠損値として解釈する挙動を理解し、文字列として保持したいコード列ではkeep_default_naを明示する方法を整理します。

SHARE
XBLUESKYFACEBOOKLINE