0
votes

Je tiens à choisir les 4 premiers mots de chaque ligne d'une colonne et basé sur la valeur attribuer une nouvelle valeur à une autre colonne nouvellement créée à l'aide de Python.

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"  Entrez la description de l'image ici 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


0 commentaires

3 Réponses :


2
votes

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")


1 commentaires

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"))



0
votes

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.

a Regardez et laissez-moi savoir si cela fonctionne xxx


0 commentaires

0
votes

Vous pouvez utiliser .str.Contains , qui retournera une série booléenne avec le même index que df , puis l'utiliser comme indexeur xxx

Avis Les accessoires de chaîne de Pandas fonctionnent avec regex par défaut par défaut.

De cette façon, vous éviterez un générique Appliquer Appel, rendant votre code plus rapide. .


0 commentaires