将功能应用于DataFrame列中的内容并将其保存在另一个

时间:2020-01-13 03:19:03

标签: python pandas

大家好,所以这是问题所在,我有一个像这样的DataFrame:

     item_id  item_title  item_content  title_trans  content_trans
0    1        "First"     "Stuff"       NaN          NaN
     ...      ...         ...           ...          ...
99   100      "Last"      "More stuff"  NaN          NaN

我打算做的是对title和content列应用翻译,将输出保存到其各自的最后一列。 (翻译将通过TextBlob或python翻译完成)。 输出应如下所示:

     item_id  item_title  item_content  title_trans  content_trans
0    1        "First"     "Stuff"       "Primera"    "Cosas"
     ...      ...         ...           ...          ...
99   100      "Last"      "More stuff"  "Última"     "Más cosas"

我的最新想法是使用DataFrame.iterrows()创建for,并使用iloc保存每个输出,有点像这样:

for index, item in DataFrame.iterrows():
    raw_text = '\n'.join(item['item_title'], item['item_content'])
    trans_text = str(TextBlob(raw_text).translate(to='es'))
    title, content = trans_text.split('\n')
    DataFrame.iloc(index, 'title_trans') = title
    DataFrame.iloc(index, 'content_trans') = content

这对于小型数据集有多好,如果我将其应用于海量数据集(数千个),我将看到它如何开始变慢。有没有比for循环更喜欢映射它的方法呢?

1 个答案:

答案 0 :(得分:1)

尝试使用apply

df['title_trans'] = df['item_title'].apply(lambda x: str(TextBlob(x).translate(to='es')))
df['content_trans'] = df['item_content'].apply(lambda x: str(TextBlob(x).translate(to='es')))