首页 > 解决方案 > 如何将一列中存在的两种不同格式的日期时间值转换为一种格式?

问题描述

我有一列由两种格式组成:yyyymmdd(例如 20210513.0)和 5 位格式(例如 44351)。我希望这两种格式都转换为一种-"%d/%m/%Y"

我可以通过执行以下操作将 yyyymmdd 格式转换为所需的格式,

df['date'] = pd.to_datetime(df['date'], format='%Y%m%d', errors='coerce').dt.strftime("%d/%m/%Y") 

但是这样做我会丢失 5 位数的日期。如何使用 pandas/python 将这两种格式转换为一种格式?

标签: pandasdataframedate

解决方案


您可以分别转换这两种格式,第二个用于转换 excel 样式日期时间unitorigin参数,然后用另一个日期时间替换缺失值Series.fillna

df = pd.DataFrame({'date':[20210513.0,44351.0]})

d1 = pd.to_datetime(df['date'], format='%Y%m%d', errors='coerce')
d2 = pd.to_datetime(df['date'], unit='D', origin='1899-12-30', errors='coerce')

df['date'] = d1.fillna(d2).dt.strftime("%d/%m/%Y") 
print (df)
         date
0  13/05/2021
1  04/06/2021 

推荐阅读