我有一个数据框,其中包含一些点的ID和坐标
df
ID x y geometry
0 0 -73.847701 18.024993 POINT (-73.84770051912155 18.02499306784136)
1 1 -73.849600 18.025617 POINT (-73.84959983488658 18.02561663390971)
2 2 -73.860621 18.031506 POINT (-73.86062088694281 18.03150628817371)
3 3 -73.864964 18.025705 POINT (-73.86496448074752 18.02570510646184)
4 4 -73.791759 18.031940 POINT (-73.79175934035219 18.03194019925698)
然后我有一个数据行,其中包含一行的开头和结尾
df1
start end
0 (-73.84770051912155 18.02499306784136) (-73.84959983488658 18.02561663390971)
1 (-73.84959983488658 18.02561663390971) (-73.86496448074752 18.02570510646184)
我想将start
中的end
和ID
的{{1}}关联到坐标,而不是坐标。
答案 0 :(得分:0)
我首先要把POINT删除:
df["geometry"] = df["geometry"].map(lambda x: x.str.split("POINT ")[1])
#Output
ID x y geometry
0 0 -73.847701 18.024993 (-73.84770051912155 18.02499306784136)
1 1 -73.849600 18.025617 (-73.84959983488658 18.02561663390971)
2 2 -73.860621 18.031506 (-73.86062088694281 18.03150628817371)
3 3 -73.864964 18.025705 (-73.86496448074752 18.02570510646184)
4 4 -73.791759 18.031940 (-73.79175934035219 18.03194019925698)
然后找出与每一行的开始和结束相关的ID:
df1["start"] = df1["start"].map(lambda x: df.loc[df.geometry==x,"ID"].values[0])
df1["stop"] = df1["stop"].map(lambda x: df.loc[df.geometry==x,"ID"].values[0])
在这里,我假设ID指向唯一的位置。
#Output
start stop
0 0 1
1 1 3
希望我能正确理解您的问题。否则,您可以发布输出外观的示例。