How do I apply a function to every element in a list in every row of a dataframe?
df:
label top_topics
adverts ['werbung', 'geschenke']
my function looks something like this:
from langdetect import detect
from googletrans import Translator
def detect_and_translate(text):
target_lang = 'en'
try:
result_lang = detect(text)
except:
result_lang = target_lang
if result_lang == target_lang:
return text, result_lang
else:
translator = Translator()
translated_text = translator.translate(text, dest=target_lang)
return translated_text.text, result_lang
expecting an output like :
label top_topics translation language
adverts ['werbung', 'geschenke'] ['advertising', 'gifts'] de
I tried something like this but didn't translate the column top_topics
as it couldn't loop through every element in the list.
df['translate_detect'] = df['top_topics'].apply(detect_and_translate)
df['top_topics_en'], df['language'] = df.translate_detect.str
Any help?