def asfreq(self, freq=None, how='<STR_LIT:E>'):
how = libperiod._validate_end_alias(how)<EOL>freq = Period._maybe_convert_freq(freq)<EOL>base1, mult1 = libfrequencies.get_freq_code(self.freq)<EOL>base2, mult2 = libfrequencies.get_freq_code(freq)<EOL>asi8 = self.asi8<EOL>end = how == '<STR_LIT:E>'<EOL>if end:<EOL><INDENT>ordinal = asi8 + mult1 - <NUM_LIT:1><EOL><DEDENT>else:<EOL><INDENT>ordinal = asi8<EOL><DEDENT>new_data = period_asfreq_arr(ordinal, base1, base2, end)<EOL>if self._hasnans:<EOL><INDENT>new_data[self._isnan] = iNaT<EOL><DEDENT>return type(self)(new_data, freq=freq)<EOL>
Convert the Period Array/Index to the specified frequency `freq`.

Parameters
----------
freq : str
    a frequency
how : str {'E', 'S'}
    'E', 'END', or 'FINISH' for end,
    'S', 'START', or 'BEGIN' for start.
    Whether the elements should be aligned to the end
    or start within pa period. January 31st ('END') vs.
    January 1st ('START') for example.

Returns
-------
new : Period Array/Index with the new frequency

Examples
--------
>>> pidx = pd.period_range('2010-01-01', '2015-01-01', freq='A')
>>> pidx
PeriodIndex(['2010', '2011', '2012', '2013', '2014', '2015'],
dtype='period[A-DEC]', freq='A-DEC')

>>> pidx.asfreq('M')
PeriodIndex(['2010-12', '2011-12', '2012-12', '2013-12', '2014-12',
'2015-12'], dtype='period[M]', freq='M')

>>> pidx.asfreq('M', how='S')
PeriodIndex(['2010-01', '2011-01', '2012-01', '2013-01', '2014-01',
'2015-01'], dtype='period[M]', freq='M')