#python #pandas #list #loops #dictionary
#python #pandas #Список #циклы #словарь
Вопрос:
Я хочу использовать следующий код, чтобы перевести текст из определенных столбцов моего df и экспортировать его в тот же df. Код работает, за исключением случая, когда значение столбца пустое / пустое. Кроме того, значения для моего SourceLanguageCode и TargetLanguageCode находятся в каждой строке столбцов ‘source’ и ‘target’ в моем df, поскольку они разные для каждой строки, поэтому их можно прочитать оттуда и не указывать язык в параметрах?
cols_to_translate = ['text1', 'text2', 'text3']
for col in cols_to_translate:
df[f'translated_{col}'] = df[col].apply(lambda x: translate.translate_text(Text=x,
SourceLanguageCode='en', TargetLanguageCode='fr').get('TranslatedText')
Это должно привести к чему-то вроде этого
cols_to_translate = ['text1', 'text2', 'text3']
for col in cols_to_translate:
df[f'translated_{col}'] = df[col].apply(lambda x: translate.translate_text(Text=x,
SourceLanguageCode=sc, TargetLanguageCode=tg).get('TranslatedText')
Где tg должно быть эквивалентно каждой строке для столбца ‘target’, а sc эквивалентно для строк в столбце ‘source’ при переводе по строкам, но я не знаю, как выразить это на python
Ответ №1:
def translate(row, text_col):
return translate.translate_text(
Text=row[col],
SourceLanguageCode=row.source,
TargetLanguageCode=row.target).get('TranslatedText')
cols_to_translate = ['text1', 'text2', 'text3']
for col in cols_to_translate:
df[f'translated_{col}'] = df.apply(lambda row: translate(row, col), axis=1)
Комментарии:
1. спасибо, но возвращает эту ошибку: AttributeError: объект ‘function’ не имеет атрибута ‘translate_text’
2. Пожалуйста, всегда при публикации кода добавляйте описание того, как этот код работает и как он решает проблему.
3. @ruslantau, большое спасибо, что уделили время, на первый взгляд все работает, перепроверит и отметит ответ как правильный, если все хорошо. Еще раз, огромное спасибо!!