【问题标题】:Integer YYYYMMDD to DateTime (e.g. 01JAN2021)整数 YYYYMMDD 到日期时间(例如 01JAN2021)
【发布时间】:2021-01-16 08:56:15
【问题描述】:

我在将表示日期(YYYYMMDD 格式)的 Pandas DataFrame 的整数类型列转换为 DateTime 类型列并以特定格式(例如 01JAN2021)解析结果时遇到了一些困难。这是一个开始使用的示例 DataFrame:

import pandas as pd

df = pd.DataFrame(data={"CUS_DATE": [19550703, 19631212, 19720319, 19890205, 19900726]})

print(df)

   CUS_DATE
0  19550703
1  19631212
2  19720319
3  19890205
4  19900726

到目前为止,我尝试过的所有方法中,唯一有效的方法如下:

df["CUS_DATE"] = pd.to_datetime(df['CUS_DATE'], format='%Y%m%d')

print(df)

    CUS_DATE
0 1955-07-03
1 1963-12-12
2 1972-03-19
3 1989-02-05
4 1990-07-26

但以上不是我要寻找的结果。我想要的输出应该如下:

    CUS_DATE
0  03JUL1955
1  12DEC1963
2  19MAR1972
3  05FEB1989
4  26JUL1990

我们将不胜感激。

【问题讨论】:

    标签: python python-3.x pandas datetime


    【解决方案1】:

    这样做:

    In [1347]: df["CUS_DATE"] = pd.to_datetime(df['CUS_DATE'], format='%Y%m%d')
    In [1359]: df["CUS_DATE"] = df["CUS_DATE"].apply(lambda x: x.strftime('%d%b%Y').upper())
    
    In [1360]: df
    Out[1360]: 
        CUS_DATE
    0  03JUL1955
    1  12DEC1963
    2  19MAR1972
    3  05FEB1989
    4  26JUL1990
    

    【讨论】:

      【解决方案2】:

      除了pandas.to_datetime,您还可以使用pandas.Series.dt.strftimepandas.Series.str.upper 方法:

      df["CUS_DATE"] = (pd.to_datetime(df['CUS_DATE'], format='%Y%m%d')
                          .dt.strftime('%d%b%Y').str.upper())
      #    CUS_DATE
      #0  03JUL1955
      #1  12DEC1963
      #2  19MAR1972
      #3  05FEB1989
      #4  26JUL1990
      

      另外,请查看this documentation,您可以在其中找到日期时间格式代码。

      【讨论】:

        猜你喜欢
        • 2015-02-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-01
        • 2011-01-23
        • 2015-04-19
        • 2017-05-05
        相关资源
        最近更新 更多