python - 我可以结合这两个功能并获得相同的输出吗?
问题描述
我有两个函数用于从字符串中提取纬度和经度。然后我在我的 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”的论点。
解决方案
传递 'lat' 作为关键字参数,这将解决问题:
data['hs_directory']['lat'] = data['hs_directory']['Location 1'].apply(coordinates, lat_or_long='lat')
推荐阅读
- javascript - 无法将数据传递到材质对话框 - Angular2+
- android - 应用程序安装期间的 INSTALL_FAILED_SHARED_USER_INCOMPATIBLE 错误
- html - 为什么表格标题不使用宽度设置?
- python - 如何使用 Python 窥探 Google Dataflow / Apache Beam 内部
- c++ - 输出一个可能是三种类型之一的数字
- ios - iOS 11 - 当 DisplayMode.primaryHidden 更改为 .allVisible 时,SplitViewController 主导航表视图更改状态栏颜色
- react-native - paddingTop 似乎是随机行动
- join - 将 start_date 和 _end_date 加入另一个表并总结
- jquery - Django循环上的Jquery选择器
- java - 如何在 JFreeChart 中更改温度计中的边范围值颜色