IIU C, мы можем создать словарь, используя pd.to_datetime
для получения номера месяца.
Я использовал список псевдо, но вам нужно изменить
format='%B_%Y')
до format='%b_%Y')
или любой другой формат имени вашего столбца.
setup
import pandas as pd
import numpy as np
import calendar
year_cols = ['colA','colB'] + [f"{c}_{i}" for i in range(2020,2028) for c in calendar.month_name[1:]]
nums = np.random.randint(0,500,size=len(year_cols))
df = pd.DataFrame([nums],columns=year_cols)
print(df.iloc[:,:7]) # print 7 columns
colA colB January_2020 February_2020 March_2020 April_2020 May_2020
0 168 296 288 298 420 172 199
Создание словаря.
rename_dict = {i : f"Month{pd.to_datetime(i,format='%B_%Y').strftime('%m')}"
for i in df.iloc[:,2:].columns}
for k,v in rename_dict.items():
if v == 'Month01':
print(f'{k} -- > {v}')
January_2020 -- > Month01
January_2021 -- > Month01
January_2022 -- > Month01
January_2023 -- > Month01
January_2024 -- > Month01
January_2025 -- > Month01
January_2026 -- > Month01
January_2027 -- > Month01
переименование столбцов.
df = df.rename(columns=rename_dict)
print(df.iloc[:,:7]) # print 7 columns
colA colB Month01 Month02 Month03 Month04 Month05
0 168 296 288 298 420 172 19