将pandas数据框中的整数列转换为前导零的月份

时间:2019-07-06 09:35:42

标签: python pandas dataframe datetime

我想将Python pandas数据框中的Month and Day列从整数更改为带前导零的字符串。

我想要的是这里:输入在这里作为熊猫数据框:

Year Month  Day
2018     1    1
2018     1   12
2018     1   18
2018     2    4
2018     2    1
2018     2    2
2018     2   12
2018     3   30

我想让他们这样:

Year Month  Day
2018    01   01
2018    01   12
2018    01   18
2018    02   04
2018    02   01
2018    02   02
2018    02   12
2018    03   30

我的方法很笨,而且很慢。

def Import():
    df = pd.read_csv('Transaction_data.csv',index_col=0)
    n = len(df)
    for i in range(n):
        temp = df['Year'].loc[i]
        df['Year'].loc[i] = str(temp)

    for i in range(n):
        temp = df['Month'].loc[i]
        if temp<10:
            df['Month'].loc[i] = '0'+str(temp)
        else:
            df['Month'].loc[i] = str(temp)

    for i in range(n):
        temp = df['Day'].loc[i]
        if temp<10:
            df['Day'].loc[i] = '0'+str(temp)
        else:
            df['Day'].loc[i] = str(temp)
    return df

pd.to_datetime(df['Month'],format='%d')

无济于事,因为to_datetime仅将月份作为整数[1,12]

2 个答案:

答案 0 :(得分:4)

  

我想将Python pandas数据框中的Month and Day列从整数更改为带前导零的字符串。

使用series.str.zfill()

df[['Month','Day']]=df[['Month','Day']].astype(str).apply(lambda x: x.str.zfill(2))
print(df)

   Year Month Day
0  2018    01  01
1  2018    01  12
2  2018    01  18
3  2018    02  04
4  2018    02  01
5  2018    02  02
6  2018    02  12
7  2018    03  30

答案 1 :(得分:1)

您提到希望拥有一个字符串值,以便可以使用简单的lambda。在“一天”示例中,您应该具有:

df['Day'].apply(lambda x: "0"+str(x) if x<10 else x)