应用一个函数来翻译熊猫数据框中的一列,条件是其他列

Posted

技术标签:

【中文标题】应用一个函数来翻译熊猫数据框中的一列,条件是其他列【英文标题】:Apply a function to translate a column in pandas dataframe with condition on other columns 【发布时间】:2015-11-29 06:15:49 【问题描述】:

data 是一个 pandas 数据框,其中 language 和 config['TEXT FIELD'] 是列。我想将文本栏中的某些评论翻译成英文,我正在使用函数 dfApply

import goslate
def dfApply(row):
    if row["langauge"] == 'en':
       return row[config['TEXT FIELD']]
    else:
       return gs.translate(row[config['TEXT FIELD']], 'en')


gs = goslate.Goslate()
data['english_text'] = data.apply(dfApply, axis=1)

但编译器显示以下错误

KeyError: ('langauge', 'occurred at index 0')

【问题讨论】:

你在哪一行出错了? 我应用dfApply函数的最后一行 language 是一列,表示文本使用的语言 为什么不直接将整列转换为英文,然后使用非英文行的掩码仅替换您需要的行?这比在每个步骤中使用 apply 条件要容易一些。 语言翻译 goslate 对大量数据点抛出超时错误 【参考方案1】:

这样的方法可能更简单。

not_en = data["language"] != "en"
trans = translate(data[config['row']], "en")
col = config['row']
data.loc[not_en, col] = trans[not_en]

【讨论】:

以上是关于应用一个函数来翻译熊猫数据框中的一列,条件是其他列的主要内容,如果未能解决你的问题,请参考以下文章

用第一个值减去熊猫数据框中的一列

如何一次将函数应用于熊猫数据框中的多个列

如何根据条件将数据框中的一列切成多个系列

熊猫从数据框中的一列中提取部分字符串并将其存储在一个新列中

如何在 Pandas 数据框中的特定位置插入一列? (更改熊猫数据框中的列顺序)

如何通过使用数据框中的其他列来聚合熊猫数据框中的列