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
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 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)
Method 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
Method 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)
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0