【发布时间】:2018-02-13 00:50:45
【问题描述】:
我有一个 DataFrame,其中有一列坐标不同,在其他列表中聚集在一起,如下所示:
name OBJECTID geometry
0 NaN 1 ['-80.304852,-3.489302,0.0','-80.303087,-3.490214,0.0',...]
1 NaN 2 ['-80.27494,-3.496571,0.0',...]
2 NaN 3 ['-80.267987,-3.500003,0.0',...]
我想分隔值并删除“0.0”,但将它们保留在列表中以将它们添加到字典中的某个键,如下所示:
name OBJECTID geometry
0 NaN 1 [[-80.304852, -3.489302],[-80.303087, -3.490214],...]
1 NaN 2 [[-80.27494, -3.496571],...]
2 NaN 3 [[-80.267987, -3.500003],...]
这是我的代码在我尝试在 for 循环中分隔它们时不起作用:
import panda as pd
import numpy as np
r = pd.read_csv('data.csv')
rloc = np.asarray(r['geometry'])
r['latitude'] = np.zeros(r.shape[0],dtype= r['geometry'].dtype)
r['longitude'] = np.zeros(r.shape[0],dtype= r['geometry'].dtype)
# Separating the latitude and longitude values form each string.
for i in range(0, len(rloc)):
for j in range(0, len(rloc[i])):
coord = rloc[i][j].split(',')
r['longitude'] = coord[0]
r['latitude'] = coord[1]
r = r[['OBJECTID', 'latitude', 'longitude', 'name']]
编辑:结果不好,因为它只为每个值打印一个值。
OBJECTID latitude longitude name
0 1 -3.465566 -80.151633 NaN
1 2 -3.465566 -80.151633 NaN
2 3 -3.465566 -80.151633 NaN
额外问题:如何在一个元组中添加所有这些经度和纬度值以与 geopy 一起使用?像这样:
r['location'] = (r['latitude], r['longitude'])
因此,几何列将如下所示:
geometry
[(-80.304852, -3.489302),(-80.303087, -3.490214),...]
[(-80.27494, -3.496571),...]
[(-80.267987, -3.500003),...]
编辑:
数据起初看起来像这样(对于每一行):
<LineString><coordinates>-80.304852,-3.489302,0.0 -80.303087,-3.490214,0.0 ...</coordinates></LineString>
我用正则表达式修改了它,使用以下代码:
geo = np.asarray(r['geometry']);
geo = [re.sub(re.compile('<.*?>'), '', string) for string in geo]
然后我把它放在一个数组中:
rv = [geo[i].split() for i in range(0,len(geo))]
r['geometry'] = np.asarray(rv)
当我调用 r['geometry'] 时,输出为:
0 [-80.304852,-3.489302,0.0, -80.303087,-3.49021...
1 [-80.27494,-3.496571,0.0, -80.271963,-3.49266,...
2 [-80.267987,-3.500003,0.0, -80.267845,-3.49789...
Name: geometry, dtype: object
而r['geometry'][0] 是:
['-80.304852,-3.489302,0.0',
'-80.303087,-3.490214,0.0',
'-80.302131,-3.491878,0.0',
'-80.300763,-3.49213,0.0']
【问题讨论】:
-
你得到了什么结果?
-
更新结果!它不起作用,因为里面的列表已被删除...我正在尝试找到解决方法。