EcoHealthGuy
EcoHealthGuy

Reputation: 51

Issue with converting a pandas column from int64 to datetime64

I'm trying to convert a column of Year values from int64 to datetime64 in pandas. The column currently looks like

         Year

         2003
         2003
         2003
         2003
         2003
         ... 
         2021
         2021
         2021
         2021
         2021

However the data type listed when I use dataset['Year'].dtypes is int64.

That's after I used pd.to_datetime(dataset.Year, format='%Y') to convert the column from int64 to datetime64. How do I get around this?

Upvotes: 1

Views: 739

Answers (2)

Nameer1811
Nameer1811

Reputation: 63

You have to assign pd.to_datetime(df['Year'], format="%Y") to df['date']. Once you have done that you should be able to see convert from integer.

df = pd.DataFrame({'Year': [2000,2000,2000,2000,2000,2000]})

df['date'] = pd.to_datetime(df['Year'], format="%Y")

df

The output should be:

    Year    date
0   2000    2000-01-01
1   2000    2000-01-01
2   2000    2000-01-01
3   2000    2000-01-01
4   2000    2000-01-01
5   2000    2000-01-01

So essentially all you are missing is df['date'] = pd.to_datetime(df['Year'], format="%Y") from your code and it should be working fine with respect to converting.

The pd.to_datetime() will not just return the Year (as far as I understood from your question you wanted the year), if you want more information on what .to_date_time() returns, you can see the documentation.

I hope this helps.

Upvotes: 1

mozway
mozway

Reputation: 260300

You should be able to convert from an integer:

df = pd.DataFrame({'Year': [2003, 2022]})

df['datetime'] = pd.to_datetime(df['Year'], format='%Y')

print(df)

Output:

   Year   datetime
0  2003 2003-01-01
1  2022 2022-01-01

Upvotes: 2

Related Questions