0
votes

Supprimer une liste des lettres fournies du début de la chaîne

J'ai un dataframe-df avec des "noms" de la colonne ci-dessous: xxx

code: xxx

maintenant le problème est que je avoir un Dataframe de plus de 1 million de valeurs de colonne. Mon code n'est pas bien optimisé? Comment obtenir une solution optimisée?

numéro 1: Je peux comprendre que j'ai utilisé 2 boucles (1 pour supprimer_letters et autres pour toutes les valeurs de colonne) qui causent la lenteur.

Y a-t-il une meilleure façon? Où je peux vérifier si les valeurs de colonne commencent par les lettres mentionnées dans la liste Supprimer_letters et les dépouiller à un coup?

numéro 2 et 3: Quel est l'objectif de la fonction - "supprimer_strings": Obtenez uniquement les 2 chaînes des noms de colonne. Pour par exemple: Aneeel Electronics T La sortie sera la suivante: Aneeel Electronics

Y a-t-il un moyen plus rapide pour les fonctions: remove_strings, supprimer_end_digits

problème principal: Tout cette fonction peut être effectuée à un coup ensemble? < / p>

Dataframe attendu: xxx

Remarque: la fonction "retirer_start_words" doit vérifier si l'une des lettres mentionnées se déclenche dans les "noms" si oui, supprimer eux. Par exemple: "Al Themax" devrait être "Themax" pas comme "max" (suppression des deux al et du)

Merci d'avance.


1 commentaires

Que diriez-vous d'utiliser str.lstrip ?


3 Réponses :


0
votes

Vous pouvez utiliser la méthode de remplacement comme celle-ci:

import pandas as pd

file_path = 'file3.xlsx'

df = pd.read_excel(file_path)

words_to_remove = ["THE", "AL"]

for word in words_to_remove:
    df.Names = df.Names.str.replace(word, "")

print(df)


1 commentaires

Merci, amis, je cherche une solution unique pour les problèmes. Aussi avec la solution ci-dessus si les valeurs de colonne sont "Al Themax", il faut "Themax". mais la sortie est "max" il supprime tous les deux al et comme c'est dans une boucle



0
votes

Étant donné que vous avez dit que vous vouliez seulement que les mots retirés du début de la phrase, vous pouvez utiliser une expression régulière: xxx

la variable d'expression régulière_expression contiendrait ^ le | Al dans ce cas signification Le ou al au début de la chaîne.


3 commentaires

Merci généralement à sadite utilisation de la fonction "Lamda" n'est pas une façon optimisée de faire des choses. Mais j'aime ta réponse. Y a-t-il autre moyen de l'utiliser en évitant la Lamda? Aussi ma question est de savoir comment puis-je utiliser toutes mes fonctions en une fois? Toutes les réponses répondaient à une seule fonction de la mienne


@pyds_learner Je ne sais pas où vous avez entendu dire que ce n'est pas une bonne idée d'utiliser des lambdas, mais ils sont totalement bien si vous les utilisez si nécessaire, et celui-ci est complètement bien. En outre, c'est peut-être une bonne idée de uplifier les réponses que vous aimez.


Il est plus lent d'utiliser Appliquer + Lambda que d'utiliser d'autres fonctions STR, mais dans votre cas, aucune fonction prédéfinie ne fait que le travail, l'une avec un Lambda est beaucoup plus rapide que de passer par votre liste 2-3 fois.



0
votes

quelques minutes de recherche sur Google me dit que

def stripper(delete_list):
    def delete(item):
        nonlocal delete_list
        for rm in delete_list:
            item = item.lstrip(rm)
        return item
    return delete

df['Names'] = df['Names'].apply(stripper(['AL', 'THE'])


0 commentaires