我想将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]
答案 0 :(得分:4)
我想将Python pandas数据框中的Month and Day列从整数更改为带前导零的字符串。
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)