Voici le dataframe:

     State  RegionName            
0    NY     New York             
1    CA     Los Angeles      
2    IL     Chicago 865         
3    PA     Philadelphia Wrin   
4    AZ     Phoenix City 

Je veux que le résultat ressemble à ceci:

     State   RegionName           
0    NY      New             
1    CA      Los         
2    IL      Chicago            
3    PA      Philadelphia 
4    AZ      Phoenix     

Comment le faire sans utiliser de boucles for ??

1
Kakarot_7 31 mai 2020 à 11:23

4 réponses

Meilleure réponse

Utilisez Series.str.split avec sélectionner les premières valeurs par indexation:

print (df['RegionName'].str.split())
0             [New, York]
1          [Los, Angeles]
2          [Chicago, 865]
3    [Philadelphia, Wrin]
4         [Phoenix, City]
Name: RegionName, dtype: object

df['RegionName'] = df['RegionName'].str.split().str[0]
print (df)
  State    RegionName
0    NY           New
1    CA           Los
2    IL       Chicago
3    PA  Philadelphia
4    AZ       Phoeni
2
jezrael 31 mai 2020 à 08:32

Voici une alternative utilisant {{X0} }

df['RegionName'] = df['RegionName'].str.extract(r'(.*)\s')

Mais mon premier instinct serait d'utiliser ce que @jezrael a mentionné.

Démo Regex

0
Ch3steR 31 mai 2020 à 08:41

Vous pouvez remplacer des mots supplémentaires par '' en utilisant str.replace

df["RegionName"] = df.RegionName.str.replace('\s.*','')
df
     RegionName state
0           New    NY
1           Los    CA
2       Chicago    IL
3  Philadelphia    PA
4       Phoenix    AZ
0
Dishin H Goyani 31 mai 2020 à 09:25

Vous pouvez également str.extract le début de la chaîne mais exclure l'espace ^[^\s]+ à l'aide de l'expression régulière

df['RegionName']=df['RegionName'].str.extract('(^[^\s]+)')
0
wwnde 31 mai 2020 à 08:38