I am trying to process CSV files as follows:
df = pd.read_csv("raw_hl.csv", index_col='time', parse_dates = True))
df.head(2)
high low
time
2014-01-01 17:00:00 1.376235 1.375945
2014-01-01 17:01:00 1.376005 1.375775
2014-01-01 17:02:00 1.375795 1.375445
2014-01-01 17:07:00 NaN NaN
...
2014-01-01 17:49:00 1.375645 1.375445
type(df.index)
pandas.tseries.index.DatetimeIndex
But they do not automatically have a frequency:
print df.index.freq
None
In case they have different frequencies, it would be convenient to be able to set them automatically. The easiest way is to compare the first two lines:
tdelta = df.index[1] - df.index[0]
tdelta
datetime.timedelta(0, 60)
So far, so good, but setting the frequency directly to this timedelta fails:
df.index.freq = tdelta
AttributeError Traceback (most recent call last)
<ipython-input-25-3f24abacf9de> in <module>()
AttributeError: can't set attribute
Is there a way (ideally relatively painless!) To do this?
ANSWER: Pandas gave the dataframe has an index.inferred_freq attribute - perhaps so as not to overwrite the user-defined frequency. df.index.inferred_freq = 'T'
So it's just a matter of using this instead of df.index.freq. Thanks to Jeff, who also provides more details below :)