【问题标题】:How to get specific strings between strings in rows?如何在行中的字符串之间获取特定的字符串?
【发布时间】:2020-04-25 01:39:34
【问题描述】:

我有一个这样的 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

请问我该怎么做?

【问题讨论】:

    标签: pandas split


    【解决方案1】:

    Regular expressionsstr extractrsplit 的组合可能会有所帮助:试试这个并确认它适用于所有情况:

    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]
    

    【讨论】:

      【解决方案2】:

      另一种方式

      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- 紧跟空格和逗号的任何数字

      \d+\-\d+[N|S]+- 数字后跟 - 然后是数字和 N 或 S

      \d+\-\d+[E|W]+- 数字后跟 - 然后是数字和 E 或 W

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-12-24
        • 1970-01-01
        • 2012-09-16
        • 2020-02-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多