gpt4 book ai didi

python - 在 Pandas 的 Lambda 函数中使用条件语句的问题

转载 作者:行者123 更新时间:2023-12-04 08:09:54 30 4
gpt4 key购买 nike

我正在尝试翻译所有名为 tweet_text 的列在我的数据集中。我有大约 100,000 行数据,其中大约 50% 需要翻译成英文。
以下代码有效,但我基本上是在运行该函数来翻译每一行的推文,这需要将近 2 个小时。
注:x != " "检查推文是否不是空字符串,因为某些推文只有 " "当我从他们身上删除了一些表情符号时,就剩下这些了。
Link to deep-translator

from deep_translator import GoogleTranslator
import swifter
import pandas as pd

df_bdtu['tweet_text'] = df_bdtu.tweet_text.swifter.apply(lambda x: GoogleTranslator(source='auto', target='en').translate(x) if x != " " else None)
因此,为了加快速度,我尝试仅在它们不是英语时才翻译它们,因为我有一个列说明推文的语言,称为 lang .
在这里,我只是遍历两列并翻译 tweet_text :
  • 如果推文不是 " "
  • 如果推文不在 English
  • df_bdtu[['tweet_text', 'lang']].swifter.apply(lambda x: GoogleTranslator(source='auto', target='en').translate(x['tweet_text']) if (x['tweet_text'] != " " and x['lang'] != "en") else None, axis = 1)
    但是我收到一个错误,这表明我正在一次传递所有文本以进行翻译,但我似乎无法修复它。我也对加快速度的方法持开放态度。
    错误:
    deep_translator.exceptions.NotValidPayload:  --> text must be a valid text with maximum 5000 character, otherwise it cannot be translated
    数据框:
    data = {'tweet_text': ['100 Arsenal appearances. Congratulations, Rob! ', "     Lundi soir dans l'émission ,     et   ont débriefé la victoire dans le Der...", '  È in corso la votazione tra le 4 figurine finaliste!', '   y’a absolument zéro vanne l’avis est désastreux. ', 'FINAL  1-3 ¡El   firma una gran remontada en su primera victoria de 2021!  ... ', '  JÁ HÁ ONZE!   ', 'HALF-TIME Southampton 1-0 LiverpoolDanny Ings’ brilliant early opener is the difference at the break ', "10' Une-deux parfaitement exécuté entre Tino et   Notre capitaine voit sa frappe passer au-dessus. 0-0 ", '  ¡INCREÍBLE, DOS SANTOS!          ', '   +3     '], 'lang': ['en', 'fr', 'it', 'fr', 'es', 'pt', 'en', 'fr', 'es', 'und']}
    df = pd.DataFrame(data)

    tweet_text lang
    100 Arsenal appearances. Congratulations, Rob! en
    Lundi soir dans l'émission , et ont débriefé la victoire dans le Der... fr
    È in corso la votazione tra le 4 figurine finaliste! it
    y’a absolument zéro vanne l’avis est désastreux. fr
    FINAL 1-3 ¡El firma una gran remontada en su primera victoria de 2021! ... es
    JÁ HÁ ONZE! pt
    HALF-TIME Southampton 1-0 LiverpoolDanny Ings’ brilliant early opener is the difference at the break en
    10' Une-deux parfaitement exécuté entre Tino et Notre capitaine voit sa frappe passer au-dessus. 0-0 fr
    ¡INCREÍBLE, DOS SANTOS! es
    +3 und

    最佳答案

  • 该代码在提供的示例中运行良好,因此已将其他行添加到示例数据帧中,从而导致 exceptions .
  • 写一个函数,用try - except捕获无效行。
  • excp.NotValidPayload excp.NotValidLength deep_translator Class exceptions .

  • 请注意,以下代码未使用 import swifter , 因为它是一个用来加速的模块.apply ,并且不需要进行测试。

  • import pandas as pd
    from deep_translator import GoogleTranslator as GT
    from deep_translator import exceptions as excp

    # sample dataframe
    data = {'tweet_text': ['100 Arsenal appearances. Congratulations, Rob! ', " Lundi soir dans l'émission , et ont débriefé la victoire dans le Der...", ' È in corso la votazione tra le 4 figurine finaliste!', ' y’a absolument zéro vanne l’avis est désastreux. ', 'FINAL 1-3 ¡El firma una gran remontada en su primera victoria de 2021! ... ', ' JÁ HÁ ONZE! ', 'HALF-TIME Southampton 1-0 LiverpoolDanny Ings’ brilliant early opener is the difference at the break ', "10' Une-deux parfaitement exécuté entre Tino et Notre capitaine voit sa frappe passer au-dessus. 0-0 ", ' ¡INCREÍBLE, DOS SANTOS! ', ' +3 ', "Quoique ce détail ne touche en aucune manière au fond même de ce que nous avons à raconter, il n'est peut-être pas inutile, ne fût-ce que pour être exact en tout, d'indiquer ici les bruits et les propos qui avaient couru sur son compte au moment où il était arrivé dans le diocèse. Vrai ou faux, ce qu'on dit des hommes tient souvent autant de place dans leur vie et surtout dans leur destinée que ce qu'ils font. M. Myriel était fils d'un conseiller au parlement d'Aix; noblesse de robe. On contait de lui que son père, le réservant pour hériter de sa charge, l'avait marié de fort bonne heure, à dix-huit ou vingt ans, suivant un usage assez répandu dans les familles parlementaires. Charles Myriel, nonobstant ce mariage, avait, disait-on, beaucoup fait parler de lui. Il était bien fait de sa personne, quoique d'assez petite taille, élégant, gracieux, spirituel; toute la première partie de sa vie avait été donnée au monde et aux galanteries. La révolution survint, les événements se précipitèrent, les familles parlementaires décimées, chassées, traquées, se dispersèrent. M. Charles Myriel, dès les premiers jours de la révolution, émigra en Italie. Sa femme y mourut d'une maladie de poitrine dont elle était atteinte depuis longtemps. Ils n'avaient point d'enfants. Que se passa-t-il ensuite dans la destinée de M. Myriel? L'écroulement de l'ancienne société française, la chute de sa propre famille, les tragiques spectacles de 93, plus effrayants encore peut-être pour les émigrés qui les voyaient de loin avec le grossissement de l'épouvante, firent-ils germer en lui des idées de renoncement et de solitude? Fut-il, au milieu d'une de ces distractions et de ces affections qui occupaient sa vie, subitement atteint d'un de ces coups mystérieux et terribles qui viennent quelquefois renverser, en le frappant au coeur, l'homme que les catastrophes publiques n'ébranleraient pas en le frappant dans son existence et dans sa fortune? Nul n'aurait pu le dire; tout ce qu'on savait, c'est que, lorsqu'il revint d'Italie, il était prêtre.Quoique ce détail ne touche en aucune manière au fond même de ce que nous avons à raconter, il n'est peut-être pas inutile, ne fût-ce que pour être exact en tout, d'indiquer ici les bruits et les propos qui avaient couru sur son compte au moment où il était arrivé dans le diocèse. Vrai ou faux, ce qu'on dit des hommes tient souvent autant de place dans leur vie et surtout dans leur destinée que ce qu'ils font. M. Myriel était fils d'un conseiller au parlement d'Aix; noblesse de robe. On contait de lui que son père, le réservant pour hériter de sa charge, l'avait marié de fort bonne heure, à dix-huit ou vingt ans, suivant un usage assez répandu dans les familles parlementaires. Charles Myriel, nonobstant ce mariage, avait, disait-on, beaucoup fait parler de lui. Il était bien fait de sa personne, quoique d'assez petite taille, élégant, gracieux, spirituel; toute la première partie de sa vie avait été donnée au monde et aux galanteries. La révolution survint, les événements se précipitèrent, les familles parlementaires décimées, chassées, traquées, se dispersèrent. M. Charles Myriel, dès les premiers jours de la révolution, émigra en Italie. Sa femme y mourut d'une maladie de poitrine dont elle était atteinte depuis longtemps. Ils n'avaient point d'enfants. Que se passa-t-il ensuite dans la destinée de M. Myriel? L'écroulement de l'ancienne société française, la chute de sa propre famille, les tragiques spectacles de 93, plus effrayants encore peut-être pour les émigrés qui les voyaient de loin avec le grossissement de l'épouvante, firent-ils germer en lui des idées de renoncement et de solitude? Fut-il, au milieu d'une de ces distractions et de ces affections qui occupaient sa vie, subitement atteint d'un de ces coups mystérieux et terribles qui viennent quelquefois renverser, en le frappant au coeur, l'homme que les catastrophes publiques n'ébranleraient pas en le frappant dans son existence et dans sa fortune? Nul n'aurait pu le dire; tout ce qu'on savait, c'est que, lorsqu'il revint d'Italie, il était prêtre.Quoique ce détail ne touche en aucune manière au fond même de ce que nous avons à raconter, il n'est peut-être pas inutile, ne fût-ce que pour être exact en tout, d'indiquer ici les bruits et les propos qui avaient couru sur son compte au moment où il était arrivé dans le diocèse. Vrai ou faux, ce qu'on dit des hommes tient souvent autant de place dans leur vie et surtout dans leur destinée que ce qu'ils font. M. Myriel était fils d'un conseiller au parlement d'Aix; noblesse de robe. On contait de lui que son père, le réservant pour hériter de sa charge, l'avait marié de fort bonne heure, à dix-huit ou vingt ans, suivant un usage assez répandu dans les familles parlementaires. Charles Myriel, nonobstant ce mariage, avait, disait-on, beaucoup fait parler de lui. Il était bien fait de sa personne, quoique d'assez petite taille, élégant, gracieux, spirituel; toute la première partie de sa vie avait été donnée au monde et aux galanteries. La révolution survint, les événements se précipitèrent, les familles parlementaires décimées, chassées, traquées, se dispersèrent. M. Charles Myriel, dès les premiers jours de la révolution, émigra en Italie. Sa femme y mourut d'une maladie de poitrine dont elle était atteinte depuis longtemps. Ils n'avaient point d'enfants. Que se passa-t-il ensuite dans la destinée de M. Myriel? L'écroulement de l'ancienne société française, la chute de sa propre famille, les tragiques spectacles de 93, plus effrayants encore peut-être pour les émigrés qui les voyaient de loin avec le grossissement de l'épouvante, firent-ils germer en lui des idées de renoncement et de solitude? Fut-il, au milieu d'une de ces distractions et de ces affections qui occupaient sa vie, subitement atteint d'un de ces coups mystérieux et terribles qui viennent quelquefois renverser, en le frappant au coeur, l'homme que les catastrophes publiques n'ébranleraient pas en le frappant dans son existence et dans sa fortune? Nul n'aurait pu le dire; tout ce qu'on savait, c'est que, lorsqu'il revint d'Italie, il était prêtre.", ['😀 😃 😄 😁 😆 😅 😂 🤣'], '😀 😃 😄 😁 😆 😅 😂 🤣'], 'lang': ['en', 'fr', 'it', 'fr', 'es', 'pt', 'en', 'fr', 'es', 'und', 'fr', 'sp', 'sp']}
    df = pd.DataFrame(data)

    # function to translate and catch exceptions
    def translate(x):
    try:
    v = GT(source='auto', target='en').translate(x['tweet_text']) if (x['tweet_text'] != " " and x['lang'] != "en") else x['tweet_text']
    except (excp.NotValidPayload, excp.NotValidLength) as e:
    v = f'Translation Exception: {type(e)}'
    return v


    # translate the column
    df['translated'] = df[['tweet_text', 'lang']].apply(lambda x: translate(x), axis = 1)

    # find rows with Translation Exception
    not_translated = df[['tweet_text', 'lang', 'translated']][df['translated'].str.startswith('Translation Exception')]

    关于python - 在 Pandas 的 Lambda 函数中使用条件语句的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66032621/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com