8

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?

piRSquared
  • 285,575
  • 57
  • 475
  • 624

1 Answers1

12

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'>
root
  • 32,715
  • 6
  • 74
  • 87