将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:
长话短说明如何保留原始日期格式
答案 0 :(得分:1)
您的日期字符串中有空格。在致电pd.to_datetime
之前使用pd.Series.str.strip
以确保您避免错误。
在这里你甚至不需要剥离空白:
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
仅在您事先知道日期的具体格式时才提供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