jurre
jurre

Reputation: 111

KeyError: Timestamp when converting date in column to date

Trying to convert the date (type=datetime) of a complete column into a date to use in a condition later on. The following error keeps showing up:

KeyError: Timestamp('2010-05-04 10:15:55')

Tried multiple things but I'm currently stuck with the code below.

for d in df.column:
    pd.to_datetime(df.column[d]).apply(lambda x: x.date())

Also, how do I format the column so I can use it in a statement as follows:

df = df[df.column > 2015-05-28]

Upvotes: 1

Views: 25825

Answers (2)

Umar.H
Umar.H

Reputation: 23099

Just adding an answer in case anyone else ends up here :

firstly, lets create a dataframe with some dates, change the dtype into a string and convert it back. the errors='ignore' argument will ignore any non date time values in your column, so if you had John Smith in row x it would remain, on the same vein, if you changed errors='coerce' it would change John Smith into NaT (not a time value)

# Create date range with frequency of a day
rng = pd.date_range(start='01/01/18', end ='01/01/19',freq='D')
#pass this into a dataframe
df = pd.DataFrame({'Date' : rng})
print(df.dtypes)
Date    datetime64[ns]
#okay lets case this into a str so we can convert it back
df['Date'] = df['Date'].astype(str)
print(df.dtypes)
Date    object
# now lets convert it back #
df['Date'] = pd.to_datetime(df.Date,errors='ignore')
print(df.dtypes)
Date    datetime64[ns]
# Okay lets slice the data frame for your desired date ##
print(df.loc[df.Date > '2018-12-29'))


 Date
363 2018-12-30
364 2018-12-31
365 2019-01-01

Upvotes: 3

jurre
jurre

Reputation: 111

The answer as provided by @Datanovice:

pd.to_datetime(df['your column'],errors='ignore') 

then inspect the dtype it should be a datetime, if so, just do

df.loc[df.['your column'] > 'your-date' ]

Upvotes: 1

Related Questions