I've read this issue, but it didn't work here. I've a dataframe and want to add new column with the month index considering the position they've in a list.
I don't want to create an if condition because I've more languages in real life. That's why I want to use f string to call my list. But it isn't working.
Here is the example:
dic_events = {'month':['January', 'February'], 'url':['www.abc.com', 'www.def.com']}
df_events = pd.DataFrame(dic_events)
def add_month_index(language, month):
month_en = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
month_de = ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"]
df_events['month_id'] = f"month_{language}".index(f"{month}") 1
return df_events
add_month_index('en', 'January')
CodePudding user response:
Use a dictionary that maps the language to the list of month names.
def add_month_index(language, month):
months = {
"en": ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
"de": ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"]
}
df_events['month_id'] = months[language].index(month) 1
return df_events
I'm not sure why month
is a parameter to the function. It seems like you would actually want to get that from the month
column of the df, so each row of the table will get the month ID corresponding to its month, rather than assigning the same month ID to every row.