この記事は、下記のような方におすすめです。
- ゼロ埋めとは何なのかを知りたい
- ゼロ埋めをする方法が知りたい
- 日付が「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を独学で学習する方法は特におすすめです。
最後までお読みいただき、ありがとうございました。がんばってください!