【Python】ゼロ埋めを初心者向けに解説!日付への適用例も紹介

スポンサードリンク
Python

この記事は、下記のような方におすすめです。

  • ゼロ埋めとは何なのかを知りたい
  • ゼロ埋めをする方法が知りたい
  • 日付が「701」になってしまったから、「0701」に直したい

この記事を読んでわかること

  • ゼロ埋めの基礎がわかる
  • ゼロ埋めのしかたやコードがわかる
  • ゼロ埋めの実践例がわかる
スポンサードリンク

ゼロ埋めの基礎[Python]

※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。

ゼロ埋めとは

「ゼロ埋め」は、「数値や文字の先頭もしくは末尾に0を追加して、桁を合わせること」を言います。
代表的な例をお見せします。下図をご覧ください。

A列とB列に同じ番号の社員No.が記載されています。
A列はゼロ埋めなし、B列はゼロ埋めありです。

B列は番号の先頭が0で埋められていて、全て8桁になっています。
これがゼロ埋めです。

ではゼロ埋めの簡単な例(コード、実行結果)を見ていきましょう。

世界一簡単なゼロ埋めの例

前項の社員No.のように、「1」を「00000001」にしてみましょう。

number = '1'
number = number.zfill(8)
print(number)

<実行結果>
00000001

上記コードにて、変数「number」に入った「1」をゼロ埋めして「00000001」にすることができます。

1行目で「number」という変数を作り、数字の「1」を代入します(型に注意。次項で解説)
2行目でゼロ埋めをした後、変数「number」に再代入しています。

【 コード解説(2行目のみ) 】
zfill(8):今回は8桁になるようにゼロ埋めしています。()内に最終桁数を記述してください。

「number」が8桁以上ある場合は、そのままで何も起こりません。

number = '123456789'
number = number.zfill(8)
print(number)

<実行結果>
123456789

さて、ここで終わってしまうと、後々エラーで困ることになるため、もう1例お見せします。

世界で二番目に簡単なゼロ埋めの例

number = 1
number = str(number).zfill(8)
print(number)

<実行結果>
00000001

前項の例と似ていますが、少しだけ違います。

まずは1行目です。
変数の型が違います。

  • 前項:「number = ‘1’」なので「str型」
  • 今回:「number = 1」なので「int型」

「’」があるかないかです。
ちょっと細かいですね…。
わからないという方は変数の記事をご参考ください。

続いて2行目は「str()」が追加されています。
これは、変数「number」が「int型」なので、「str型」に変換しているということです。

<テンプレ>
【 変数 = str(変数).zfill(最終桁数) 】

ゼロ埋めは、「str型」にしないと実行できません。
変数の型を把握しておき、「str型」以外なら「str型」に変換するようにしましょう。
int型でゼロ埋めしようとすると、以下のようなエラーが出ます。

「int型」だと「zfill」が使えないよ!と言ってきています。
つまり「int型」ではゼロ埋めができないということです。

ゼロ埋めした値を元に戻す方法

2つの方法を紹介いたします。

  • int():全て数字の場合におすすめ
  • lstrip():文字が混ざっている場合におすすめ

状況に応じて使い分けてください。

int()でセロ埋めを戻す

ゼロ埋めした値を「int()」で囲む(int型にする)と、元の値に戻すことができます。

number = '1'
number = number.zfill(8)
print(number)
number = int(number)
print(number)

<実行結果>
00000001
1

しかしながら、元々の値が「A」などのように文字が混ざってる場合、エラーが出てint型にすることができません。

文字が混ざっている場合は、次項で解説する「lstrip()」を使ってください。

lstrip()でセロ埋めを戻す

number = 'A'
number = number.zfill(8)
print(number)
number = number.lstrip('0')
print(number)

<実行結果>
0000000A
A

元の値が「A00」などという場合も、キチンと頭の0だけ消してくれるので安心してください。

number = 'A00'
number = number.zfill(8)
print(number)
number = number.lstrip('0')
print(number)

<実行結果>
00000A00
A00

スポンサードリンク

ゼロ埋めの実践例[Python]

簡単な実践例を見ていきましょう。

日付のゼロ埋め

下図のような元データがあります。

日付をゼロ埋めして、「301」を「0301」などにしてみましょう。

import pandas as pd

df = pd.read_csv('input.csv', encoding='shift-jis')

df['日付'] = df['日付'].astype(str).str.zfill(4)

df.to_excel('output.xlsx', index = None)

dataframeを使用するため、pandasをインポートしています。
pandasのインストール方法や使い方は下記記事をご参考ください。

【 コード解説(5行目のみ) 】
DataFrameでゼロ埋めをするには、列や行を指定した後、続けて「.astype(str).str.zfill(4)」と記述します。

「.zfill()」は前項と同じですね。
「.astype(str).str」は、前項での「str()」だと思ってください。
つまり「str型」に変換しているということです。

DataFrameで一列を丸々str型に変換する場合は、「.astype(str).str」のように記述します。

<テンプレ>
【 DataFrame変数[‘ゼロ埋めしたい列’] = DataFrame変数[‘ゼロ埋めしたい列’].astype(str).str.zfill(桁数) 】

これで日付のゼロ埋めが完了しました。

スポンサードリンク

最後に

Pythonでゼロ埋めをする方法を解説いたしました。

当ブログでは、xlwingsやopenpyxlなど、Pythonに関する情報を配信しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。

挫折せずにPythonを独学で学習する方法は特におすすめです。

最後までお読みいただき、ありがとうございました。がんばってください!

タイトルとURLをコピーしました