Как подстроить столбец в фрейме данных pandas

У меня есть 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

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
45
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Используйте 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

Другие вопросы по теме