[英]Convert a column of integers in pandas dataframe to month with leading zeros
我想将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]
我想将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
您提到您希望有一个字符串值,以便可以使用简单的lambda。 在“一天”示例中,您应该具有:
df['Day'].apply(lambda x: "0"+str(x) if x<10 else x)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.