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)
无法正常工作。
答案 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']