les pandas.factoriser sur l'ensemble d'un bloc de données
pandas.factoriser
code pour les valeurs d'entrée comme un type énuméré ou variable catégorique.
Mais comment puis-je facilement et efficacement convertir beaucoup de colonnes d'un bloc de données? Que dire de l'inverse de la cartographie étape?
Exemple: Ce bloc de données contient des colonnes avec des valeurs de chaîne tels que "type 2" que je voudrais convertir des valeurs numériques - et, éventuellement, de les traduire en arrière plus tard.
OriginalL'auteur clstaudt | 2016-09-08
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
apply
si vous avez besoin defactorize
chaque colonne séparément:Si vous avez besoin pour la même chaîne de valeur de la même numérique:
Si vous avez besoin d'appliquer la fonction uniquement pour certaines colonnes, utiliser un sous-ensemble:
Solution avec
factoriser
:Traduire est possible via
map
pardict
, où vous avez besoin de supprimer les doublons pardrop_duplicates
:Vous pouvez utiliser le sous-ensemble, donnez-moi une seconde.
OriginalL'auteur jezrael
J'ai aussi trouvé cette réponse très utile:
https://stackoverflow.com/a/20051631/4643212
J'ai essayé de prendre des valeurs d'une colonne existante dans une Pandas DataFrame (une liste d'adresses IP nommé "SrcIP') et leur associer des valeurs numériques dans une nouvelle colonne (nommé " ID " dans cet exemple).
Solution:
Résultat:
OriginalL'auteur Gabe F.
Je voudrais rediriger ma réponse: https://stackoverflow.com/a/32011969/1694714
Vieille réponse
Un autre lisible solution pour ce problème, lorsque vous souhaitez conserver les catégories uniforme à l'échelle de l'résultant DataFrame est à l'aide de remplacer:
Des performances légèrement pire que l'exemple de @jezrael, mais plus facile à lire. Aussi, il pourrait dégénérer mieux pour les grands ensembles de données. Je peux faire quelques tests appropriés si quelqu'un est intéressé.
OriginalL'auteur tbrittoborges