2018-07-11 23:52:13.710格式转换为%y-%m-%d(2018-07-11)by pandas?

时间:2019-05-25 08:44:42

标签: pandas

1       2018-07-11 23:52:13.710
2       2016-09-02 13:52:00.163
3       2018-01-10 23:28:00.187
4       2017-09-11 22:21:24.487
5       2017-01-06 09:55:01.110

我有一个系列a,上面的类型是字符串。我想将其转换为这种格式(%y-%m-%d)。

pd.to_datetime(df['a'],format='%Y-%m-%d)无法正常工作。

1 个答案:

答案 0 :(得分:1)

您可以省略或指定参数format,然后使用Series.dt.date-输出是python对象date

s = pd.to_datetime(df['a']).dt.date
#with format parameter
#s = pd.to_datetime(df['a'],format='%Y-%m-%d %H:%M:%S.%f').dt.date
print (s)
1    2018-07-11
2    2016-09-02
3    2018-01-10
4    2017-09-11
5    2017-01-06
Name: a, dtype: object

print (s.values[:3])
[datetime.date(2018, 7, 11) datetime.date(2016, 9, 2)
 datetime.date(2018, 1, 10)]

使用Series.dt.floor-输出是没有时间的日期时间:

s = pd.to_datetime(df['a']).dt.floor('d')
#with format parameter
#s = pd.to_datetime(df['a'],format='%Y-%m-%d %H:%M:%S.%f').dt.floor('d')
print (s)
1   2018-07-11
2   2016-09-02
3   2018-01-10
4   2017-09-11
5   2017-01-06
Name: a, dtype: datetime64[ns]

最后,如果需要自定义格式的日期时间字符串,请使用Series.dt.strftime

s = pd.to_datetime(df['a']).dt.strftime('%y-%m-%d')
#with format parameter
#s = pd.to_datetime(df['a'],format='%Y-%m-%d %H:%M:%S.%f').dt.strftime('%y-%m-%d')
print (s)
1    18-07-11
2    16-09-02
3    18-01-10
4    17-09-11
5    17-01-06
Name: a, dtype: object

print (s.values[:3])
['18-07-11' '16-09-02' '18-01-10']