Home > Back-end >  How to convert dataframe string into date time
How to convert dataframe string into date time

Time:06-04

df['Year,date']
 Sep 10 
1       Sep 16 
2       Aug 01 
3       Sep 30 
4       Sep 28 
         ...   
2230    Jul 20 
2231    Oct 26 
2232    Oct 13 
2233    Dec 31 
2234    Jul 08 
Name: Year,date, Length: 2235, dtype: object

This is my dataframe and I want to convert each row into data time in Months and date, format, I have tried some codes but not working on mine.

CodePudding user response:

welcome to Stack Overflow. To convert the dataframe you mentioned from string to date time, you can use below code. Initial data

from datetime import datetime
data = {'date': ['Sep 16', 'Aug 01', 'Sep 30', 'Sep 16']}
df=pd.DataFrame(data)
df.info()
>>  #   Column  Non-Null Count  Dtype 
   ---  ------  --------------  ----- 
    0   date    4 non-null      object

print(df)
>>     date
   0  Sep 16
   1  Aug 01
   2  Sep 30
   3  Sep 16

To convert to datetime....

pd.to_datetime(df['date'],format='%b %d').dt.to_period('M')
df.info()
>> #   Column  Non-Null Count  Dtype         
   ---  ------  --------------  -----         
   0   date    4 non-null      datetime64[ns]
   dtypes: datetime64[ns](1)
print(df)
>>         date
     0 1900-09-16
     1 1900-08-01
     2 1900-09-30
     3 1900-09-16

You might have noticed that the year is taken as 1900 as this is the default. So, in case you need it as this year, you would do this...

from datetime import datetime
data = {'date': ['Sep 16', 'Aug 01', 'Sep 30', 'Sep 16']}
df=pd.DataFrame(data)
df.date = datetime.now().strftime("%Y")   " "   df.date
df.date = pd.to_datetime(df.date, format='%Y %b %d')
print(df)
>>    date
   0 2022-09-16
   1 2022-08-01
   2 2022-09-30
   3 2022-09-16

Now that the date is stored in the dataframe in as a datetime format, if you want to see this information in the mon dd format, you would need to do this...

print(df.date.dt.strftime("%b %d"))
>> 0    Sep 16
   1    Aug 01
   2    Sep 30
   3    Sep 16

Note that the date in df is still in datetime format.

  • Related