Python pandas:通过将存储在不同列中的值转换为中文繁体,用英文创建一个新列
我在熊猫数据框中有一列Python pandas:通过将存储在不同列中的值转换为中文繁体,用英文创建一个新列,python,pandas,translate,pypi,Python,Pandas,Translate,Pypi,我在熊猫数据框中有一列“City\u trad\u chinese”,其中包含繁体中文的值。我需要创建另一列“City_English”,该列必须包含翻译后的英语值 如何使用Python实现这一点?我尝试了以下方法: #importing required libraries import pandas as pd from os import path from googletrans import Translator #setting path to data path2data
“City\u trad\u chinese”
,其中包含繁体中文的值。我需要创建另一列“City_English”
,该列必须包含翻译后的英语值
如何使用Python实现这一点?我尝试了以下方法:
#importing required libraries
import pandas as pd
from os import path
from googletrans import Translator
#setting path to data
path2data = 'C:/Users/data'
# data import
df = pd.read_excel(path.join(path2data, 'data.xlsx'), converters={'City_trad_chinese':str})
translator = Translator()
df['City_English'] = df['City_trad_chinese'].map(lambda x: translator.translate(x, src="zh-TW", dest="en").text)
但这给了我一个错误:
raise JSONDecodeError("Expecting value", s, err.value) from None
JSONDecodeError: Expecting value
您可以使用库
googletrans
import pandas as pd
from googletrans import Translator
d = {"City_trad_chinese":["香港特别行政区",
"澳门特别行政区",
"北京市",
"上海市"]}
df = pd.DataFrame(data=d)
translator = Translator()
df["City_English"] = df["City_trad_chinese"].map(lambda x: translator.translate(x, src="zh-TW", dest="en").text)
注意:谷歌翻译API有一个。您可以通过单独转换每一行来绕行:
df["City_English"] = ""
for index, row in df.iterrows():
translator = Translator()
eng_text = translator.translate(row["City_trad_chinese"], src="zh-TW", dest="en").text
row["City_English"] = eng_text
有什么方法可以用一个命令翻译整个专栏吗?@Architgupta-use
df['eng']=df['chinese'].map(lambda x:translator.translate(x,src=“zh TW”,dest=“en”).text)
它抛出错误:从None@Architgupta可能有助于解决该问题出现错误的原因是“数据”的类型为bytes,因此在使用json.loads将其转换为json对象之前,必须将其解码为字符串。“
我已从excel文件导入数据,并且在导入时也已将特定列转换为字符串。出现错误的原因似乎是使用google translate api一次可以翻译的字符数量受到限制。如果超过这个限制(15k),google只会用一个空的json来响应。声称如果它仍然不起作用,将其减少到5k个字符块就可以解决这个问题。
df["City_English"] = ""
for index, row in df.iterrows():
translator = Translator()
eng_text = translator.translate(row["City_trad_chinese"], src="zh-TW", dest="en").text
row["City_English"] = eng_text