Remove date from datatime index in pandas

Question:

I want to remove the date from datetime function in pandas and the following code works just fine.

df= pd.read_csv('data.csv')
df['Value']= df.Value.astype(float)
df['Time'] = pd.to_datetime(df['Time']).dt.time
df.set_index('Time',inplace=True)

But after that when I try to select rows based on the time using .loc function it gives me the following error.

df_to_plot = df.loc['09:43:00':'13:54:00']

TypeError: '<' not supported between instances of 'datetime.time' and 'str'

But the same code works fine without .dt.time as follows:

df= pd.read_csv('data.csv')
df['Value']= df.Value.astype(float)
df['Time'] = pd.to_datetime(df['Time'])
df.set_index('Time',inplace=True)
df_to_plot = df.loc['2022-07-28 09:43':'2022-07-28 13:54']

How can I remove date and still select rows based on time?
Thank you.

Asked By: jkmp

||

Answers:

The TypeError arrises because df['Time'] = pd.to_datetime(df['Time']).dt.time turns df['Time'] into a datetime.time object, whereas in your loc statement, '09:43:00':'13:54:00' is a string.
Try this:

df['Time'] = pd.to_datetime(df['Time']).dt.time.astype(str)
Answered By: Freda Xin

try using df.index = df.index.time

Answered By: pythonEnthusiast420