如何使两个不同的日期格式在单列中唯一?

时间:2019-04-26 11:30:05

标签: python pandas dataframe datetime

我只有一列,我不知道如何,但是一列有两种不同的格式。

df['Date'] = [6/24/2019,6/14/2019,2019-09-06 00:00:00,6/14/2019,6/14/2019]

我想要对其进行进一步处理,所以我希望将其制成单一格式。

df['Date'] = [6/24/2019,6/14/2019,9/06/2019,6/14/2019,6/14/2019]

我已经尝试过类似的事情

data['New_date'] = pd.to_datetime(df['Date'], format = '%m/%d/%Y')

但这给了我这个错误

ValueError:时间数据6/24/2019与指定的格式不匹配

3 个答案:

答案 0 :(得分:1)

同时使用两种格式的to_datetimeerrors='coerce'使用NaT(如果不匹配),并用Series.combine_firstSeries.fillna用另一个Series替换缺失值它们,最后由Series.dt.strftime转换为字符串:

s1 = pd.to_datetime(data['Date'], format='%Y-%d-%m %H:%M:%S', errors='coerce')
s2 = pd.to_datetime(data['Date'], format = '%m/%d/%Y', errors='coerce')

#2 possible solutions
data['new'] = s1.fillna(s2).dt.strftime('%m/%d/%Y')
data['new'] = s1.combine_first(s2).dt.strftime('%m/%d/%Y')
print (data)
                  Date         new
0            6/24/2019  06/24/2019
1            6/14/2019  06/14/2019
2  2019-09-06 00:00:00  06/09/2019
3            6/14/2019  06/14/2019
4            6/14/2019  06/14/2019

答案 1 :(得分:0)

尝试导入datetime类。这样您就可以使用strptime函数,如下所示:

format = '%d/%m/%Y'
data['New_date'] = datetime.strptime('2019-09-06 00:00:00', format)

答案 2 :(得分:0)

1.23