如何将Longlat点的熊猫数据框中的ID与第二个数据框相关联?

时间:2019-06-22 17:50:41

标签: python pandas

我有一个数据框,其中包含一些点的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中的endID的{​​{1}}关联到坐标,而不是坐标。

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

希望我能正确理解您的问题。否则,您可以发布输出外观的示例。