0
votes

Comment supprimer de nombreuses lignes de DataFrame à l'aide de boucles, qui ithèrent à travers les valeurs qui doivent être supprimées?

J'essaie de supprimer plusieurs millions de lignes par son nom, qui représente plus de 1000 valeurs uniques.

Il y a le Dataframe principal (DF_SUMMARY) et un autre Dataframe contenant le nom des lignes qui doivent être supprimés du Dataframe principal.

Suppression de quelques colonnes n'est pas un problème, mais le nombre d'uniques Les valeurs doivent être supprimées sont simplement trop nombreuses pour exécuter manuellement. Par conséquent, j'essaie de boucler à travers elle.

https://imgur.com/a/ VVQpepe "Look global des deux dataframes, de nombreuses colonnes suivant la colonne"

suivi est ce que j'ai essayé: xxx


0 commentaires

3 Réponses :


0
votes

En règle générale, la plupart du temps lorsque vous êtes en boucle sur un objet Pandas, vous ne devriez pas être parce qu'il y a une meilleure façon de le faire.

Essayez ceci: P>

df_summary.drop(rows_to_remove.values, inplace=True)


0 commentaires

1
votes

Vous pouvez utiliser isine pour créer un masque et utilisez ensuite ce masque pour filtrer votre DataFrame (pour avoir uniquement la valeur ou avoir des valeurs autres que ces valeurs) xxx


2 commentaires

Merci d'avoir répondu. Cela semble avoir fonctionné. Cela vous dérangerait-il de me dire ce que le symbole est appelé en termes de pandas et de ce qu'il fait?


Tilda (~) inverse le masque créé. Avec isine Nous vérifions laquelle des lignes de df_summary contient des valeurs de rows_to_remove ['contrat'] . Cependant, puisque vous voulez exclure ces lignes, nous utilisons le symbole Tilda. Imprimer M & ~ m & vous obtiendrez une idée visuelle de ce qui se passe.



1
votes

Si vous ithétiez les lignes, cela ne sera pas aussi efficace que si vous utilisiez les capacités d'indexation des fichiers Dataframes Pandas. Je ne comprends pas tout à fait la différence entre df_summary code> et rows_to_remove code> dans votre exemple car ils chargent tous les deux le même CSV. Mais imaginons que vous avez toutes les valeurs de df_summary ['contrat'] code> que vous souhaitez supprimer dans une liste appelée valse_to_remove code>. Ensuite, vous pouvez faire quelque chose comme ceci:

# values_to_remove = the list of values you are trying to remove
df_cleaned = df_summary.loc[ ~df_summary['contract'].isin(values_to_remove) ]


0 commentaires