我有这样的数据:
0 2/18/2020
1 9/30/2019
每条线路都是str
我希望它保持其类型(字符串,而不是日期时间(,但看起来像这样:
0 2020-02-18
1 2019-09-30
如何为数据帧中的所有行实现这种格式?
谢谢!
使用split
分隔MM
、DD
和YYYY
,然后根据需要更改列表的顺序。在最后joining
之前,请确保个位数的月份和天数接收到前导零,使用-
而不是/
:将列表返回到一个字符串中
df = pd.DataFrame({'col': ['2/18/2020', '9/30/2019']})
df['col'] = (df.col
.apply(lambda x: x.split('/')[2:] + x.split('/')[:2])
.apply(
lambda x:
x[0:1]
+ (x[1:2] if len(x[1]) > 1 else ['0'+x[1]])
+ (x[2:3] if len(x[2]) > 1 else ['0'+x[2]])
)
.apply(lambda x: '-'.join(x)))
df
col
0 2020-02-18
1 2019-09-30
您可以使用:
import pandas as pd
df = pd.DataFrame({'date': ['2/18/2020', '9/30/2019']})
df['date'] = pd.to_datetime(df['date']).dt.strftime('%Y-%m-%d')
print(df)
结果:
date
0 2020-02-18
1 2019-09-30