python/ pandas: конвертировать месяц int в имя месяца
большая часть информации, которую я нашел, не была в python>pandas>dataframe, следовательно, вопрос.
Я хочу преобразовать целое число от 1 до 12 В имя месяца abbrieviated.
у меня есть df, который выглядит так:
client Month
1 sss 02
2 yyy 12
3 www 06
Я хочу, чтобы df выглядел так:
client Month
1 sss Feb
2 yyy Dec
3 www Jun
4 ответов
вы можете сделать это эффективно с совмещением calendar.month_abbr
и df[col].apply()
import calendar
df['Month'] = df['Month'].apply(lambda x: calendar.month_abbr[x])
один из способов сделать это является с apply
метод в фрейме данных, но для этого вам нужна карта для преобразования месяцев. Вы можете сделать это с помощью функции / словаря или с помощью собственного datetime Python.
С datetime это будет что-то вроде:
def mapper(month):
date = datetime.datetime(2000, month, 1) # You need a dateobject with the proper month
return date.strftime('%b') # %b returns the months abbreviation, other options [here][1]
df['Month'].apply(mapper)
в simillar образом, вы можете создать свою собственную карту для пользовательских имен. Это будет выглядеть так:
months_map = {01: 'Jan', 02: 'Feb'}
def mapper(month):
return months_map[month]
очевидно, вы не необходимо определить эти функции явно и может использовать lambda
непосредственно в методе apply.
вы можете сделать это легко с помощью столбца apply.
import pandas as pd
df = pd.DataFrame({'client':['sss', 'yyy', 'www'], 'Month': ['02', '12', '06']})
look_up = {'01': 'Jan', '02': 'Feb', '03': 'Mar', '04': 'Apr', '05': 'May',
'06': 'Jun', '07': 'Jul', '08': 'Aug', '09': 'Sep', '10': 'Oct', '11': 'Nov', '12': 'Dec'}
df['Month'] = df['Month'].apply(lambda x: look_up[x])
df
Month client
0 Feb sss
1 Dec yyy
2 Jun www