Search code examples
pandastime-seriesdelete-rowdataframe

Deleting a Row from a Time Indexed Dataframe


I'm trying to delete a row in a Pandas dataframe by simply passing the date and time.

The dataframe has the following structure:

Date_Time             Price1   Price2    Price3                       
2012-01-01 00:00:00    63.05    41.40    68.14
2012-01-01 01:00:00    68.20    42.44    59.64
2012-01-01 02:00:00    61.68    43.18    49.81

I have been trying with df = df.drop('2012-01-01 01:00:00')

But I keep getting the following error message:

exceptions.ValueError: labels [2012-01-01 01:00:00] not contained in axis

Any help on either deleting the row or just deleting the values would be much appreciated.

:-)


Solution

  • It looks like you have to actually use the Timestamp rather than the string:

    In [11]: df1
    Out[11]:
                         Price1  Price2  Price3
    Date_Time
    2012-01-01 00:00:00   63.05   41.40   68.14
    2012-01-01 01:00:00   68.20   42.44   59.64
    2012-01-01 02:00:00   61.68   43.18   49.81
    
    In [12]: df1.drop(pd.Timestamp('2012-01-01 01:00:00'))
    Out[12]:
                         Price1  Price2  Price3
    Date_Time
    2012-01-01 00:00:00   63.05   41.40   68.14
    2012-01-01 02:00:00   61.68   43.18   49.81
    

    Assuming DateTime is the index, if not use

    df1 = df.set_index('Date_Time')