piRSquared piRSquared - 1 month ago 7
Python Question

how do I get at the pandas.offsets object given an offset string

Suppose I have an offset string

'BM'
or
'7W'


I know the answer for
'BM'
is
pd.offsets.BMonthEnd()


for
'7W'
is
pd.offsets.Week(7)


Is there a generic solution in which I can pass a string and get the offset object?

Answer

It looks like pandas.tseries.frequencies.to_offset is what's used internally to convert from offset strings to a DateOffset object:

from pandas.tseries.frequencies import to_offset

freq = to_offset('7W')

You can also get it in more of a hackier way without any imports by taking the freq attribute of a trivial DateTimeIndex:

freq = pd.date_range('2016-03-14', periods=0, freq='7W').freq

Using either method:

print(freq)
<7 * Weeks: weekday=6>

print(type(freq))
<class 'pandas.tseries.offsets.Week'>