How to add/subtract time (hours, minutes, etc.) from a Pandas DataFrame.Index whos objects are of type datetime.time?

Posted on

Question :

How to add/subtract time (hours, minutes, etc.) from a Pandas DataFrame.Index whos objects are of type datetime.time?

I’ve got a DataFrame who’s index is just datetime.time and there’s no method in DataFrame.Index and datetime.time to shift the time. datetime.time has replace but that’ll only work on individual items of the Series?

Here’s an example of the index used:

In[526]:  dfa.index[:5]
Out[526]: Index([21:12:19, 21:12:20, 21:12:21, 21:12:21, 21:12:22], dtype='object')

In[527]:  type(dfa.index[0])
Out[527]: datetime.time

Answer #1:

Liam’s link looks great, but also check out pandas.Timedelta – looks like it plays nicely with NumPy’s and Python’s time deltas.

https://pandas.pydata.org/pandas-docs/stable/timedeltas.html

pd.date_range('2014-01-01', periods=10) + pd.Timedelta(days=1)
Answered By: Cameron Stark

Answer #2:

This one worked for me:

>> print(df)
                          TotalVolume  Symbol
2016-04-15 09:00:00       108400       2802.T
2016-04-15 09:05:00       50300        2802.T

>> print(df.set_index(pd.to_datetime(df.index.values) - datetime(2016, 4, 15)))

             TotalVolume  Symbol
09:00:00     108400       2802.T
09:05:00     50300        2802.T
Answered By: Alex

Answer #3:

The Philippe solution but cleaner:

My subtraction data is: ‘2018-09-22T11:05:00.000Z’

import datetime
import pandas as pd

df_modified = pd.to_datetime(df_reference.index.values) - datetime.datetime(2018, 9, 22, 11, 5, 0)
Answered By: Philippe Remy

Leave a Reply

Your email address will not be published. Required fields are marked *