Вы можете использовать .apply()
/ .map()
с str.split
и str.format
:
df = pd.DataFrame({ "Zip" : ['501' , '38', '15' , '50501' , '80501' , '50501-514' , '85401-141' ]})
df['Zip'] = df['Zip'].apply(lambda x: '{:0>5}'.format(x.split('-')[0])) # or .map()
print(df)
Печать:
Zip
0 00501
1 00038
2 00015
3 50501
4 80501
5 50501
6 85401
РЕДАКТИРОВАТЬ: Версия с f -строки:
df['Zip'] = df['Zip'].map(lambda x: f"{x.split('-')[0]:0>5}")