Study/Python

[PYTHON] 숫자 (문자열) 앞에 0 채우기

FNAL 2020. 11. 25. 22:44

 

 

 

 

 

가끔 숫자 앞에 0을 채우고 싶을 때가 있음

그럴때는 문자열로 변환 후, zfill()을 사용하면 된다.

숫자형에서 적용시 오류가 나므로 문자로 변환 후 사용할 것.

 

zfill()의 괄호 안에는 출력하고자 하는 문자열의 총 길이를 입력하면 된다.

 

예를 들어 아래와 같이 2 앞에 0을 채워 '02'로 만들고 싶으면 zfill(2), '002'을 만들고 싶으면 zfill(3)

 

x = 2
print(str(x).zfill(2))
# 02

print(str(x).zfill(3))
# 002

 

아래에는 숫자와 문자의 자릿수를 늘려가며 앞에 0을 채워보았다.

괄호 안에 입력된 숫자보다 원래 값의 자릿수가 길면 아무런 변화없이 출력된다.

 

x = 6
for i in range(2,6):
    print(str(x).zfill(i))
    
# 06
# 006
# 0006
# 00006



x = 'Hi'
for i in range(2,6):
    print(x.zfill(i))
    
    
# Hi
# 0Hi
# 00Hi
# 000Hi

 

DataFrame에서도 아래처럼 사용가능하다.

 

import pandas as pd
# 문자형 컬럼
df = pd.DataFrame({'test':['0','12','6','d','hi','home','32','5','375']})
for i in range(2, 5):
    df['test'+str(i)] = df["test"].str.zfill(i)
df

#	test	test2	test3	test4
#0	0	00	000	0000
#1	12	12	012	0012
#2	6	06	006	0006
#3	d	0d	00d	000d
#4	hi	hi	0hi	00hi
#5	home	home	home	home
#6	32	32	032	0032
#7	5	05	005	0005
#8	375	375	375	0375



import pandas as pd
# 숫자형 컬럼
df = pd.DataFrame({'test':[0,3,174,32,3,675,53,4,9,7]})
for i in range(2, 5):
    df['test'+str(i)] = df["test"].astype('str').str.zfill(i)
df

#	test	test2	test3	test4
#0	0	00	000	0000
#1	3	03	003	0003
#2	174	174	174	0174
#3	32	32	032	0032
#4	3	03	003	0003
#5	675	675	675	0675
#6	53	53	053	0053
#7	4	04	004	0004
#8	9	09	009	0009
#9	7	07	007	0007

 

반응형