【发布时间】:2020-08-12 15:25:45
【问题描述】:
我的数据如下所示:
0 2/18/2020
1 9/30/2019
每一行都是一个字符串
我希望它保持其类型(字符串,而不是日期时间)但看起来像这样:
0 2020-02-18
1 2019-09-30
如何为数据框中的所有行实现这种格式?
谢谢!
【问题讨论】:
标签: string pandas dataframe date format
我的数据如下所示:
0 2/18/2020
1 9/30/2019
每一行都是一个字符串
我希望它保持其类型(字符串,而不是日期时间)但看起来像这样:
0 2020-02-18
1 2019-09-30
如何为数据框中的所有行实现这种格式?
谢谢!
【问题讨论】:
标签: string pandas dataframe date format
使用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
【讨论】: