J'ai un dataframe-df avec des "noms" de la colonne ci-dessous: code: p> 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? P> 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. P> 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? P> 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 P> Y a-t-il un moyen plus rapide pour les fonctions: remove_strings, supprimer_end_digits p> problème principal: Tout cette fonction peut être effectuée à un coup ensemble? < / p> Dataframe attendu: p> 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) p> Merci d'avance. P> p>
3 Réponses :
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)
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
É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: 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. P> p>
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.
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'])
Que diriez-vous d'utiliser
str.lstrip code>?