Сначала нужны имена столбцов с строчными year
и month
и версиями панд 0.18.1+
.
Затем используйте to_datetime
для преобразования по нескольким столбцам с strftime
для строк:
df['MonthYear']=pd.to_datetime(df.assign(day=1)[['year','month','day']]).dt.strftime('%m-%Y')
print (df)
Sr. month year MonthYear
0 1.0 3.0 2015.0 03-2015
1 2.0 6.0 2018.0 06-2018
2 3.0 9.0 2017.0 09-2017
3 4.0 NaN NaN NaT
4 5.0 5.0 2015.0 05-2015
print (type(df.loc[0, 'MonthYear']))
<class 'str'>
Аналогично для месячного периода использования to_period
:
df['MonthYear'] = pd.to_datetime(df.assign(day=1)[['year','month','day']]).dt.to_period('m')
print (df)
Sr. month year MonthYear
0 1.0 3.0 2015.0 2015-03
1 2.0 6.0 2018.0 2018-06
2 3.0 9.0 2017.0 2017-09
3 4.0 NaN NaN NaT
4 5.0 5.0 2015.0 2015-05
print (type(df.loc[0, 'MonthYear']))
<class 'pandas._libs.tslibs.period.Period'>