2015-10-15 103 views
1

我使用Pandas加載包含郵政編碼的Excel電子表格(例如32771)。郵政編碼在電子表格中以5位數字串存儲。當它們被拉入DataFrame使用命令...Python - 將郵政編碼作爲字符串加載到DataFrame中?

xls = pd.ExcelFile("5-Digit-Zip-Codes.xlsx") 
dfz = xls.parse('Zip Codes') 

它們被轉換成數字。所以, '00501' 變成501

所以我的問題是,我該怎麼辦:

一個。加載DataFrame並保存存儲在Excel文件中的郵政編碼的字符串類型?

b。將DataFrame中的數字轉換爲五位數字符串,例如「501」變成「00501」?

回答

2
str(my_zip).zfill(5) 

print("{0:>05s}".format(str(my_zip))) 

是很多很多方法可以做到這2

2

可避免與一個自定義的轉換器,例如熊貓的類型推斷如果'zipcode'是柱與拉鍊碼頭:

dfz = xls.parse('Zip Codes', converters={'zipcode': lambda x:x}) 

這無疑是一個錯誤,因爲該列原本串編碼,提出一個問題here

+0

,如果你有在Excel'00501',數字與2個前導零,將給予在大熊貓'501' .... –

+0

這個奇妙的作品 - 謝謝! –

3

作爲一種變通方法,您可以在int秒值進行轉換,以0填充長度爲5的字符串使用Series.str.zfill

df['zipcode'] = df['zipcode'].astype(str).str.zfill(5) 

演示:

import pandas as pd 
df = pd.DataFrame({'zipcode':['00501']}) 
df.to_excel('/tmp/out.xlsx') 
xl = pd.ExcelFile('/tmp/out.xlsx') 
df = xl.parse('Sheet1') 
df['zipcode'] = df['zipcode'].astype(str).str.zfill(5) 
print(df) 

產量

zipcode 
0 00501 
相關問題