2017-04-03 116 views
1

我有一個包含一個地點(街道名稱,x和y座標)以下列:分割列到兩列(熊貓)

Location 
"1139 57 STREET New York (40.632653207600001, -74.000244990799999)" 

我想要做的就是把它分解成三列: '地址','經度'和'緯度'。類似於:

Location     Latitude    Longitude 
"1139 57 STREET New York 40.632653207600001 -74.000244990799999" 

我該如何去做這件事?

+0

的可能的複製[熊貓拆柱(HTTP://計算器的.com /問題/ 36052257 /大熊貓系分割列) –

回答

1

使用str.extract

df.Location.str.extract(
    '^(?P<Location>.*)\s*\((?P<Latitude>[^,]*),\s*(?P<Longitude>\S*)\).*$', 
    expand=True 
) 

        Location   Latitude   Longitude 
0 1139 57 STREET New York 40.632653207600001 -74.000244990799999 
0

不使用正則表達式,假設你的原始數據格式一致另一個想法:

def split_location(row): 

    Location = row[:row.find('(')-1] 
    Latitude = row[row.find('(')+1 : r.find(',')] 
    Longitude = row[row.find(',')+2 :-1] 

    return {'Location' : Location, 
      'Latitude' : Latitude, 
      'Longitude' : Longitude} 

# original_df is a 1 column dataframe of Location (string) that you want to split 
split_df = original_df[Location].apply(lambda x: split_location(x)) 
split_df = pd.DataFrame(list(split_df))