L'image des 5 premières lignes de mon jeu de données est donnée ci-dessous. Ce que je veux faire, c'est que je souhaite créer une nouvelle colonne appelée "Type de stationnement" et attribuer les valeurs de la colonne comme "compteur", "billet" et "autre" basé sur une autre colonne nommée "signe". La colonne "Sign" est la chaîne qui possède certaines valeurs de chaîne qui ont MTR et certaines qui ont TKT et certaines qui ne sont ni en eux. Donc, je veux juste mettre à l'intérieur "Type de stationnement" Colonne des valeurs "Mètre" si une ligne dans la colonne "Sign" contient la chaîne" MTR "dedans et ainsi de suite. Je faisais quelque chose comme ça:
psigninfringe ["type de stationnement '] = psigninfringe.sign.apply (Lambda x:" Mètre "Si x ==" 1P MTR M-SAT 7: 30-19: 30 "ou x == "1 / 2p MTR Samedi 7: 30-1930" Sinon "Ticket") P>
Mais il aura alors besoin de trop nombreuses ou de déclarations. Y a-t-il un meilleur moyen de le faire? Je suis nouveau à Python, désolé si c'est une question débutante. Le code de Dataframe est indiqué ci-dessous: P>
,Area Name,Street Name,Between Street 1,Between Street 2,Side Of Street,Street Marker,Arrival Time,Departure Time,Duration of Parking Event (in seconds),Sign,In Violation?,Street ID,Device ID,Month Number 8,City Square,FLINDERS STREET,SWANSTON STREET,RUSSELL STREET,3,1630N,2012-05-19 18:20:01,2012-05-19 19:19:58,3597,1/2P MTR SAT 7:30-1930,1,670,1123,5 10,Chinatown,RUSSELL STREET,Lt BOURKE STREET,BOURKE STREET,2,770E,2012-02-25 18:30:31,2012-02-25 21:02:36,9125,2P DIS M-SUN 0:00-23:59,1,1221,504,2 11,Princes Theatre,LONSDALE STREET,RUSSELL STREET,EXHIBITION STREET,1,C2858,2011-11-17 09:00:00,2011-11-17 10:41:06,6066,1P MTR M-SAT 7:30-19:30,1,894,1996,11 15,Southbank,COVENTRY STREET,DODDS STREET,WELLS STREET,4,9317S,2012-02-20 13:50:40,2012-02-20 16:33:33,9773,2P TKT A M-F 7:30-18:30,1,547,4054,2 28,Queensberry,VICTORIA STREET,KING STREET,HAWKE STREET,3,7642N,2012-02-15 11:32:34,2012-02-15 12:09:35,2221,1/4P M-SAT 7:30-18:30,1,1381,4001,2 30,Rialto,COLLINS STREET,KING STREET,WILLIAM STREET,3,2066N,2012-09-03 09:24:51,2012-09-03 10:45:41,4850,1/2P M-SAT 7:30-19:30,1,528,1290,9 45,Victoria Market,FRANKLIN STREET,QUEEN STREET,ELIZABETH STREET,1,C6628,2011-11-11 17:42:32,2011-11-11 19:50:44,7692,2P MTR M-SAT 7:30-20:30,1,681,2812,11 53,Hardware,LONSDALE STREET,QUEEN STREET,ELIZABETH STREET,1,C2942,2012-05-05 13:17:55,2012-05-05 14:59:35,6100,1P MTR M-SAT 7:30-19:30,1,894,2019,5 55,Hyatt,EXHIBITION STREET,Lt COLLINS STREET,COLLINS STREET,1,C364,2011-01-11 08:11:48,2011-01-11 16:48:39,31011,1P MTR M-SAT 7:30-19:30,1,647,243,1 56,Banks,QUEEN STREET,FLINDERS LANE,FLINDERS STREET,5,975W,2012-03-03 12:53:27,2012-03-03 14:06:27,4380,1P MTR M-SAT 7:30-19:30,1,1171,693,3
3 Réponses :
Si la valeur souhaitée de "ParkingtType CODE> ne dépend que de la présence de" MTR ", vous pouvez le trouver mieux. Cela tiendra compte de tous les cas où la MTR est dans le
.SIGN Champ, sans avoir à du code dur toutes les valeurs possibles.
pSignInfringe['Parking Type'] = pSignInfringe.Sign.apply(lambda x: "Meter" if 'MTR' in x else "Ticket")
Merci. J'ai comme ça, qui a fait ce que je voulais: PSIG violez ["type de stationnement '] = psig viol.Sign.apply (Lambda x:" MTR "en X Sinon (" TKT "en X Auger "Autres"))
Essayez de faire une boucle à la place, vous pouvez faire des listes de compréhensioon, mais je ne le recommanderais pas car vous commencez avec Python.
J'ai fait du code en fonction de votre description. P>
a Regardez et laissez-moi savoir si cela fonctionne p>
Vous pouvez utiliser Avis Les accessoires de chaîne de Pandas fonctionnent avec regex par défaut par défaut. P> De cette façon, vous éviterez un générique em> .str.Contains code>, qui retournera une série booléenne avec le même index que
df code>, puis l'utiliser comme indexeur
Appliquer code> Appel, rendant votre code plus rapide. . p> p>