Вот датафрейм:

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

Я хочу, чтобы выходные данные выглядели так:

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

Как это сделать без использования для циклов ??

1
Kakarot_7 31 Май 2020 в 11:23

4 ответа

Лучший ответ

Используйте Series.str.split с помощью выбора первых значений путем индексации:

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 Май 2020 в 08:32

Вот альтернативный вариант использования {{X0} }

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

Но мой первый инстинкт - использовать то, что упомянуло @jezrael.

Regex demo

0
Ch3steR 31 Май 2020 в 08:41

Вы можете заменить дополнительные слова на '', используя 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 Май 2020 в 09:25

Вы также можете str.extract начать строку, но исключить пробел ^[^\s]+, используя регулярное выражение

df['RegionName']=df['RegionName'].str.extract('(^[^\s]+)')
0
wwnde 31 Май 2020 в 08:38