Horacio Nesman
Horacio Nesman

Reputation: 111

pd.datetime is failing to convert to date

I have a data frame, which has a column 'Date', it is a string type, and as I want to use the column 'Date' as index, first I want to convert it to datetime, so I did:

data['Date'] = pd.to_datetime(data['Date'])

then I did,

data = data.set_index('Date')

but when I tried to do

data =  data.loc['01/06/2006':'09/06/2006',]

the slicing is not accomplished, there is no Error but the slicing doesn't occur, I tried with iloc

data =  data.iloc['01/06/2006':'09/06/2006',]

and the error message is the following:

TypeError: cannot do slice indexing on <class `'pandas.tseries.index.DatetimeIndex'> with these indexers [01/06/2006] of <type 'str'>`

So I come to the conclusion that the pd.to_datetime didn't work, even though no Error was raised?

Can anybody clarify what is going on? Thanks in advance

Upvotes: 1

Views: 490

Answers (2)

Horacio Nesman
Horacio Nesman

Reputation: 111

As I what I want is to create a new DataFrame with specific dates from the original DataFrame, I convert the column 'Date' as Index

data = data.set_index(data['Date'])

And then just create the new Data Frame using loc

data1 =  data.loc['01/06/2006':'09/06/2006']

I am quite new to Python and I thought that I needed to convert to datetime the column 'Date' which is string, but apparently is not necessary. Thanks for your help @jezrael

Upvotes: 0

jezrael
jezrael

Reputation: 862761

It seems you need change order of datetime string to YYYY-MM-DD:

data =  data.loc['2006-06-01':'2006-06-09']

Sample:

data = pd.DataFrame({'col':range(15)}, index=pd.date_range('2006-06-01','2006-06-15'))
print (data)
           col
2006-06-01    0
2006-06-02    1
2006-06-03    2
2006-06-04    3
2006-06-05    4
2006-06-06    5
2006-06-07    6
2006-06-08    7
2006-06-09    8
2006-06-10    9
2006-06-11   10
2006-06-12   11
2006-06-13   12
2006-06-14   13
2006-06-15   14

data =  data.loc['2006-06-01':'2006-06-09']
print (data)

            col
2006-06-01    0
2006-06-02    1
2006-06-03    2
2006-06-04    3
2006-06-05    4
2006-06-06    5
2006-06-07    6
2006-06-08    7
2006-06-09    8

Upvotes: 1

Related Questions