J'ai un dataframe similaire à ci-dessous:
A B C
GCSE yes GQ
GCSE no GQ
NVQ no VQ
NVQ yes VQ
Je dois ajouter une quatrième colonne basée sur les valeurs des colonnes B et C. Il y a quatre résultats possibles, EPS, HCI, CAMS, DIGI. Ils doivent être les suivants:
B C D
yes GQ HCI
no GQ EPS
yes VQ DIGI
no VQ CAMS
Le dataframe est d'environ 37 000 lignes ...
Quelqu'un peut-il conseiller le moyen le plus simple de le faire? J'ai du mal à trouver une réponse qui n'implique pas d'ajouter, de soustraire, de multiplier ou de diviser des valeurs de deux colonnes pour remplir la nouvelle colonne.
Merci
Vous pouvez créer un dictionnaire et utiliser la méthode map - cela fonctionne car les colonnes B et C sont des chaînes:
mapping = {"yes,GQ": "HCI", "no,GQ": "EPS", "yes,VQ": "DIGI", "no,VQ": "CAMS"}
df = df.assign(D=df.B.str.cat(df.C, sep=",").map(mapping))
df
A B C D
0 GCSE yes GQ HCI
1 GCSE no GQ EPS
2 NVQ no VQ CAMS
3 NVQ yes VQ DIGI
Vous pouvez également utiliser numpy select , qui est similaire à SQL case when
; Je pense que la carte suffit pour cela. Testez-le cependant pour vérifier la vitesse, car vous avez beaucoup de lignes.
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots