首页 > 解决方案 > 我可以结合这两个功能并获得相同的输出吗?

问题描述

我有两个函数用于从字符串中提取纬度和经度。然后我在我的 df 中为两者创建一个新列。我试图弄清楚是否有一种方法可以组合这两个函数,并将组合的一个用于两个新列。

import re
def coordinates_lat(string):
    coords = re.findall("\(.+\)", string)
    lat , long = coords[0].split(',')
    return float(lat.replace('(', ''))

def coordinates_long(string):
    coords = re.findall("\(.+\)", string)
    lat , long = coords[0].split(',')
    return float(long.replace(')',''))


data['hs_directory']['lat'] = data['hs_directory']['Location 1'].apply(coordinates_lat)
data['hs_directory']['lon'] = data['hs_directory']['Location 1'].apply(coordinates_long)

这就是我尝试结合的方式:

def coordinates(string, lat_or_long):
    coords = re.findall("\(.+\)", string)
    lat , long = coords[0].split(',')
    if lat_or_long == 'lat':
        return float(lat.replace('(', ''))
    if lat_or_long == 'long':
        return float(long.replace(')',''))

data['hs_directory']['lat'] = data['hs_directory']['Location 1'].apply(coordinates, 'lat')

它说我缺少“lat_or_long”的论点。

标签: pythonpandasdataframe

解决方案


传递 'lat' 作为关键字参数,这将解决问题:

data['hs_directory']['lat'] = data['hs_directory']['Location 1'].apply(coordinates, lat_or_long='lat')

推荐阅读