<p>也许这个功能会有帮助</p>
<pre><code>def offset(freq:str, n:int = 0):
"""
Pandas DateOffset wrapper
import pandas as pd
"""
# =============================================================================
# offsets_df = pd.read_html('https://pandas.pydata.org/pandas-docs/stable/user_guide/timeseries.html')[2]
# offsets_df.drop(columns = ['Description'], inplace = True)
# offsets_df.replace('None', np.NaN, inplace = True)
# offsets_df.dropna(subset = ['Frequency String'], inplace = True)
# offsets_df['Frequency String'] = offsets_df['Frequency String'].str.replace("\'", '')
# for x in ['Date Offset', 'Frequency String']:
# offsets_df[x] = offsets_df[x].str.split(' or ')
# offsets_df['Date Offset'] = offsets_df['Date Offset'].map(lambda x: x[0])
# offsets_df = explode_rows(offsets_df, 'Frequency String', fill_value = '')
# offsets_df.drop_duplicates(subset = ['Frequency String'], inplace = True)
# offsets_d = dict(zip(offsets_df['Frequency String'], offsets_df['Date Offset']))
# =============================================================================
offsets_d = {'B': 'BDay',
'C': 'CDay',
'W': 'Week',
'WOM': 'WeekOfMonth',
'LWOM': 'LastWeekOfMonth',
'M': 'MonthEnd',
'MS': 'MonthBegin',
'BM': 'BMonthEnd',
'BMS': 'BMonthBegin',
'CBM': 'CBMonthEnd',
'CBMS': 'CBMonthBegin',
'SM': 'SemiMonthEnd',
'SMS': 'SemiMonthBegin',
'Q': 'QuarterEnd',
'QS': 'QuarterBegin',
'BQ': 'BQuarterEnd',
'BQS': 'BQuarterBegin',
'REQ': 'FY5253Quarter',
'A': 'YearEnd',
'AS': 'YearBegin',
'BYS': 'YearBegin',
'BA': 'BYearEnd',
'BAS': 'BYearBegin',
'RE': 'FY5253',
'BH': 'BusinessHour',
'CBH': 'CustomBusinessHour',
'D': 'Day',
'H': 'Hour',
'T': 'Minute',
'min': 'Minute',
'S': 'Second',
'L': 'Milli',
'ms': 'Milli',
'U': 'Micro',
'us': 'Micro',
'N': 'Nano'}
return eval(f'pd.offsets.{offsets_d[freq]}({n})')
</code></pre>