glpsx
glpsx

Reputation: 679

Integer YYYYMMDD to DateTime (e.g. 01JAN2021)

I'm having some difficulties converting an integer-type column of a Pandas DataFrame representing dates (in YYYYMMDD format) to a DateTime type column and parsing the result in a specific format (e.g., 01JAN2021). Here's a sample DataFrame to get started:

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

Of all the things I have tried so far, the only one that worked was the following:

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

But the above is not the result I'm looking for. My desired output should be the following:

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

Any additional help would be appreciated.

Upvotes: 1

Views: 253

Answers (2)

Pablo C
Pablo C

Reputation: 4761

You can use, in addition to pandas.to_datetime, the methods pandas.Series.dt.strftime and pandas.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

Also, check this documentation where you can find the datetime format codes.

Upvotes: 2

Mayank Porwal
Mayank Porwal

Reputation: 34046

Do this:

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

Upvotes: 2

Related Questions