Как получить указанные c строки между строками в строках? - PullRequest
1 голос
/ 25 апреля 2020

У меня есть df как это:

Radiosoundings From Brazil
5   #  TEMP/PILOT de 82022, Boa Vista, Boa Vista Intl  (Brazil) | 02-50N | 060-42W | 84 m 
59  #  TEMP/PILOT de 82026, Tirios (Brazil) | 02-29N | 055-59W | 325 m 
108 #  TEMP/PILOT de 82099, Macapa-Aeroporto (Brazil) | 00-03N | 051-04W | 16 m 
192 #  TEMP/PILOT de 82107, Sao Gabriel Da Cachoeira (Aero) (Brazil) | 00-07S | 066-58W | 79 m 
255 #  TEMP/PILOT de 82193, Belem Aeroporto  (Brazil) | 01-23S | 048-29W | 16 m 
332 #  TEMP/PILOT de 82244, Santarem-Aeroporto (Brazil) | 02-26S | 054-43W | 72 m 
408 #  TEMP/PILOT de 82281, Sao Luiz Aeroporto  (Brazil) | 02-36S | 044-14W | 53 m 
479 #  TEMP/PILOT de 82332, Manaus Aeroporto  (Brazil) | 03-09S | 059-59W | 84 m 
547 #  TEMP/PILOT de 82397, Fortaleza (Brazil) | 03-46S | 038-36W | 26 m 

Я хочу получить только долготу широты и код каждой строки. Пример:

Code  Lat    Lon 
82022 02-50N 060-42W

Как мне это сделать, пожалуйста?

Ответы [ 2 ]

2 голосов
/ 25 апреля 2020

Другой способ

df['Code']=df[1].str.extract('((\d+)(?=\,\s))')[0]
df['Lat']=df[1].str.extract('(\d+\-\d+[N|S]+)')[0]
df['Long']=df[1].str.extract('(\d+\-\d+[E|W]+)')[0]

\d+)(?=\,\s - любой ди git, за которым сразу следует пробел и кома

\d+\-\d+[N|S]+ - ди git, затем -, а затем - di git и либо N, либо S

\d+\-\d+[E|W]+ - di git, затем - и затем следует di git и либо E, либо W

2 голосов
/ 25 апреля 2020

Регулярные выражения с комбинацией str extract и rsplit могут помочь: попробуйте это и подтвердите, что оно работает для всех случаев:

df['code'] = df[1].str.extract(r'((?<=TEMP/PILOT de\s)\d+)')
df['lon'] = df[1].str.rsplit('|').str[2]
df['lat'] = df[1].str.rsplit('|').str[1]
...