【发布时间】:2020-12-22 16:27:15
【问题描述】:
抱歉,因为写标题的英文不好。我想做的是通过与另一个数据框df2 进行比较来确定df 的位置。
df是一个数据框,显示了一段时间内经纬度的变化。它是一个包含超过 40,000 行的数据框。
df=
Longitude Latitude
Time
2020-01-01 01:00 100.0 20.0
2020-01-01 01:01 100.2 20.1
2020-01-01 01:02 300.1 30.0
2020-01-01 01:03 200.1 40.0
2020-01-01 01:04 50.0 50.0
df2 是包含位置数据的数据框。它是一个大约 30 行的数据框。
df2=
Longitude Latitude Location
0 90.0 20.0 District A
1 210.0 60.0 District B
确定我所在位置的方法将由毕达哥拉斯定理完成。 df中的每一行数据都会与df2中的每一行数据进行比较,找出最短距离,最短的距离就是我所在的位置。
以2020-01-01 01:01为例。
首先,与df2 row 0比较,计算为[(100.2-90.0)^2+(20.1-20.0)^2]^0.5。
其次,与df2 row 1比较,计算为[(100.2-210.0)^2+(20.1-60.0)^2]^0.5
由于位置与District A 之间的距离小于位置与District B 之间的距离,因此2020-01-01 01:01 上的位置将为District A。预期输出如下。
df=
Longitude Latitude Location
Time
2020-01-01 01:00 100.0 20.0 District A
2020-01-01 01:01 100.2 20.1 District A
2020-01-01 01:02 300.1 30.0 District B
2020-01-01 01:03 200.1 40.0 District B
2020-01-01 01:04 50.0 50.0 District A
我的方法:为了首先得到我的预期结果,我将创建一个充满NaN 的df['Loaction'] 列,然后我将进行计算并提取df2['Location'] 以替换NaN 中的NaN 值df['Loaction']。
但是,我很困惑的是如何获得计算结果。是否有任何相关的 pandas 函数或 NumPy 函数可以将df 中的一行与df2 中的多行进行比较?有更好的方法吗?谢谢!
【问题讨论】:
标签: python pandas dataframe numpy