将列拆分为两列(Pandas)

时间:2017-04-03 19:23:32

标签: python pandas

我有以下列包含位置(街道名称,x和y坐标):

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

我想要做的是将其分成三列:'地址'经纬度'和纬度'与此类似:

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

我该怎么做呢?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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))