【问题标题】:How to convert two different formats of date time values present in one column to one format?如何将一列中存在的两种不同格式的日期时间值转换为一种格式?
【发布时间】:2021-03-17 08:43:21
【问题描述】:

我有一列包含两种格式: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 将这两种格式转换为一种格式?

【问题讨论】:

    标签: pandas dataframe date


    【解决方案1】:

    您可以分别转换这两种格式,第二个使用unitorigin 参数来转换excel 样式的日期时间,然后用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 
    

    【讨论】:

      猜你喜欢
      • 2022-01-19
      • 1970-01-01
      • 2021-11-30
      • 1970-01-01
      • 1970-01-01
      • 2018-11-17
      • 2014-08-24
      • 2017-08-27
      相关资源
      最近更新 更多