vectorisation de la cession conditionnelle dans les pandas dataframe
Si j'ai un dataframe df avec la colonne x et que vous souhaitez créer la colonne y fondée sur des valeurs de x à l'aide de cette pseudo-code
if df['x'] <-2 then df['y'] = 1
else if df['x'] > 2 then df['y']= -1
else df['y'] = 0
comment pourrais-je atteindre cet objectif. Je suppose np.où est la meilleure façon de le faire, mais vous ne savez pas comment le coder correctement.
Remarque, il va y avoir un autre moyen de le faire avec la méthode assign() dans les pandas 16.0 (à cause de tout les jours maintenant?) semblable à dplyr muter: pandas-docs.github.io/pandas-docs-travis/...
OriginalL'auteur azuric | 2015-03-06
Vous devez vous connecter pour publier un commentaire.
Une méthode simple consisterait à attribuer la valeur par défaut en premier et ensuite effectuer 2
loc
appels:Si vous souhaitez utiliser
np.where
alors vous pourriez le faire avec un imbriquéenp.where
:Donc, ici, nous définissons la première condition que lorsque x est inférieur à -2, retour 1, puis nous avons un autre
np.where
qui teste l'autre état où x est plus grand que 2 et renvoie -1, sinon retourner 0timings
Donc, pour cet échantillon de données, la
np.where
méthode est deux fois plus rapideest-ce de travailler avec des chaînes de caractères? Je vais avoir un huuuuge revers ici...
en principe oui, mais de répondre à des questions dans les commentaires qui est contre-productif, vous devriez poster une question réelle avec les données et les horaires pour que les autres à reproduire vos problèmes de performances.
OriginalL'auteur EdChum