以一种格式pandas转换两种日期格式

时间:2018-06-07 15:17:43

标签: python pandas datetime

将pandas dataframe中的两种日期格式转换为一种最简单的方法是什么? 以下是我的输入

import pandas as pd
df = pd.DataFrame({'DOB': {0: '26/1/16 ', 1: '26/1/2016 '}})

预期产出:

       DOB
0   26/1/2016
1   26/1/2016

我需要保持相同的日期格式。

遵循评论并使用pd.to_datetime

pd.to_datetime(df.DOB)

输出:

0   2016-01-26
1   2016-01-26

哪个好,但我想保留%d/%m/%Y

的原始格式

我在执行pd.to_datetime

后尝试使用format参数
df.DOB=pd.to_datetime(df.DOB,format="%d/%m/%Y")

似乎它不会改变格式。 输出:

0   2016-01-26
1   2016-01-26

如果我直接在下面执行以提供格式,则它会产生错误,因为输入格式不同

df = pd.DataFrame({'DOB': {0: '26/1/2016 ', 1: '26/1/2016 '}})
df.DOB=pd.to_datetime(df.DOB,format="%d/%m/%Y")

ERROR:

ValueError: unconverted data remains:  

长话短说明如何保留原始日期格式

1 个答案:

答案 0 :(得分:1)

您的日期字符串中有空格。在致电pd.to_datetime之前使用pd.Series.str.strip以确保您避免错误。

选项1:不指定格式

在这里你甚至不需要剥离空白:

df = pd.DataFrame({'DOB': {0: '26/1/16 ', 1: '26/1/2016 '}})

df.DOB = pd.to_datetime(df.DOB)

print(df)

         DOB
0 2016-01-26
1 2016-01-26

选项2:在指定格式之前剥离

仅在您事先知道日期的具体格式时才提供format。如果您这样做,则需要事先使用pd.Series.str.strip

df = pd.DataFrame({'DOB': {0: '26/1/2016 ', 1: '26/1/2016 '}})

df.DOB = pd.to_datetime(df.DOB.str.strip(), format='%d/%m/%Y')

print(df)

         DOB
0 2016-01-26
1 2016-01-26