2015-11-11 66 views
1

目的:與領先的零如何將前導零格式添加到Pandas中的字符串?

目前格式化['Birth Month'],我有這樣的代碼:

import pandas as pd 
import numpy as np 

df1=pd.DataFrame.from_items([('A', [1, 2, 3]), ('B', [4, 5, 6])]) 
df1['Birth Year']= np.random.randint(1905,1995, len(df1)) 
df1['Birth Month']= str(np.random.randint(1,12, len(df1))).zfill(2) 
df1 

將會產生值的列表中['Birth Month']這不是我所需要的:

A B Birth Year Birth Month 
0 1 4 1912  [4 5 9] 
1 2 5 1989  [4 5 9] 
2 3 6 1921  [4 5 9] 

相反,我正在尋找['Birth Month']中的值和格式,如下所示:

A B Birth Year Birth Month 
0 1 4 1912  04 
1 2 5 1989  12 
2 3 6 1921  09 

回答

4

演員的一系列以str使用astype和使用D型矢量化str.zfill墊與0

In [212]: 
df1=pd.DataFrame.from_items([('A', [1, 2, 3]), ('B', [4, 5, 6])]) 
df1['Birth Year']= np.random.randint(1905,1995, len(df1)) 
df1['Birth Month']= pd.Series(np.random.randint(1,12, len(df1))).astype(str).str.zfill(2) 
df1 

Out[212]: 
    A B Birth Year Birth Month 
0 1 4  1940   09 
1 2 5  1945   04 
2 3 6  1962   03 

,你卻分配一個標值(這就是爲什麼每一行是一樣的)和元素轉換到一個列表的STR:

In [217]: 
df1['Birth Month'].iloc[0] 

Out[217]: 
'[3 6 9]' 

你可以看到這裏分配細分的結果:

In [213]: 
(np.random.randint(1,12, len(df1))) 

Out[213]: 
array([5, 7, 4]) 

In [214]: 
str(np.random.randint(1,12, len(df1))).zfill(2) 

Out[214]: 
'[2 9 5]' 
+1

EdChum - 使用你的代碼我碰到了一個AttributeError:'StringMethods'對象沒有屬性'zfill'。我正在使用Python 2.7.10。 – Student

+0

你使用的是什麼版本的熊貓? – EdChum

+0

EdChum - 我將熊貓更新爲當前版本,您的解決方案完美無缺。謝謝。 – Student

相關問題