我正在尝试编写代码,它将迭代Pandas数据框中的行,并将根据特定列中的值是否为经纬度坐标将行添加到列表中。有问题的列包含了几种格式的位置,但我们只需要lat,long坐标。以下是该列的简要预览以及格式的变化:
| 位置|
| --|
| 12010 HWY 61|
| 39.643114,-104.716489|
| (40.611712,-103.234619),Sterling,CO 80751|
| 39.111393,-108.410419|
| 北纬40°29'59.8“,西经104°37'14.9“|
我们只需要 Dataframe 中格式为(x,y)的项,例如(39.643114,-104.716489),这意味着不需要以度分秒为单位的地址和项。
到目前为止,我的想法是创建一个新列表,定义我们正在检查的条件,然后创建一个循环或函数,将这些行追加到新列表中:
xy = []
coords = r'^-?\d+\.\d+,\s-?\d+\.\d+$'
for i, row in csg.iterrows():
if re.match(coords, row["Locations"]):
xy.append(row)
其中“csg”是我正在使用的dataframe的名称。由于某些原因,此代码块未拾取任何lat,long坐标。关于条件:
coords = r'^-?\d+\.\d+,\s-?\d+\.\d+$'
我已经尝试使它包含可能是正的或负的值,独立于长度的变化,并且包含可能或可能不被逗号后的空格分隔的值。
如果可能的话,我还希望最终的代码能够从 Dataframe 中包含lat,long坐标作为较长位置的一部分的项目中提取lat,long坐标,例如提供的示例列中的项目3。
1条答案
按热度按时间eulz3vhy1#
您的模式无法匹配任何坐标,因为您正在使用Hyphen-Minus,而DataFrame中的某些行包含Hyphen。还有一点,即使处理了,你的模式也不能匹配所有有效的
lat/lon
坐标(* 例如第2和第3行 *)。试试这个:
演示:[ Regex101 ]
输出量:
如果您需要列表: