У меня есть 2 столбца в фрейме данных pandas YYYY и MM. Я хочу конкатенировать как ГГГГММ. Но проблема в том, что март 2019 года стал похож на 20193 год, а октябрь 2019 года стал похож на 201910 год. Я не могу выполнить сортировку на основе такого рода результатов. Я хочу, чтобы весь месяц имел 2 цифры, например, март месяц должен быть как 03, апрель как 04.
Как правильно их соединить?
df['YYYY']=df['Order_Date'].dt.year.astype(str)
df['MM']=df['Order_Date'].dt.month.astype(str)
df['YM'] = df.YYYY + df.MM #(this does not solve problem)
Expected 201903 201904 201910
действительный 20193 20194 201910
Используйте Series.dt.strftime
:
df = pd.DataFrame({'Order_Date':pd.date_range('2019-01-01', periods=5 ,freq='m')})
df['YM'] = df['Order_Date'].dt.strftime('%Y%m')
print (df)
Order_Date YM
0 2019-01-31 201901
1 2019-02-28 201902
2 2019-03-31 201903
3 2019-04-30 201904
4 2019-05-31 201905
Ваше решение должно работать с Series.str.zfill
:
df['YM'] = (df['Order_Date'].dt.year.astype(str) +
df['Order_Date'].dt.month.astype(str).str.zfill(2))
print (df)
Order_Date YM
0 2019-01-31 201901
1 2019-02-28 201902
2 2019-03-31 201903
3 2019-04-30 201904
4 2019-05-31 201905