PySpark中用withColumn结合Google翻译批量处理DataFrame多列语言转换
批量翻译DataFrame列至英文
要批量处理DataFrame的列翻译,直接用pandas的apply或applymap方法,对列中每个元素调用翻译函数即可,以下是具体实现:
先修正你代码中的小问题:原代码里translate(NAME_ORIG))多了一个右括号,需删除。
单列翻译示例
假设你的DataFrame名为df,要翻译name列并生成新的英文列name_en:
import pandas as pd from deep_translator import GoogleTranslator # 示例DataFrame df = pd.DataFrame({ 'name': ['ich suche den namen', 'Bonjour le monde', '你好,世界'] }) # 对name列批量翻译,生成新列 df['name_en'] = df['name'].apply( lambda x: GoogleTranslator(source='auto', target='en').translate(x) if pd.notna(x) and x.strip() else x # 处理空值或NaN ) print(df)
运行后会得到包含翻译后内容的name_en列,工具会自动识别源语言并转为英文。
多列翻译示例
如果需要同时翻译多列(比如name和description),可以用applymap方法:
# 示例多列DataFrame df = pd.DataFrame({ 'name': ['ich suche den namen', 'Bonjour le monde', '你好,世界'], 'description': ['Ich bin ein Student', 'Je suis étudiant', '我是一名学生'] }) # 批量翻译指定列 translated_cols = df[['name', 'description']].applymap( lambda x: GoogleTranslator(source='auto', target='en').translate(x) if pd.notna(x) and x.strip() else x ) # 将翻译后的列合并回原DataFrame df = pd.concat([df, translated_cols.add_suffix('_en')], axis=1) print(df)
这样就能一次性完成多列的批量翻译操作,同时处理空值避免报错。
内容的提问来源于stack exchange,提问作者David Meier
相关产品推荐
相关产品推荐

