我有两个 Pandas 数据框。第一个数据框包含不同圆圈随时间的位置。示例:df1 =
x y time
circle
1.0 235 133 1.0
2.0 236 133 1.0
3.0 245 425 1.0
4.0 215 325 2.0
5.0 287 203 4.0
6.0 394 394 5.0
第二个数据框的组织方式与第一个完全相同,但包含不同时间的正方形位置。示例:df2 =
x y time
square
1.0 243 233 1.0
1.0 293 436 2.0
2.0 189 230 3.0
2.0 189 233 4.0
3.0 176 203 4.0
3.0 374 394 5.0
我想弄清楚如何遍历数据帧 df1 以在每个时间点访问 df2 中所有当前的方 block ,找出最接近的方 block 。
示例输出:
x y time closest_sq sq_x sq_y
circle
1.0 235 133 1.0 1.0 243 233
2.0 236 133 1.0 1.0 243 233
3.0 245 425 1.0 1.0 243 233
4.0 215 325 2.0 1.0 243 233
5.0 287 203 4.0 2.0 189 233
6.0 394 394 5.0 3.0 374 394
我猜我必须在 for 循环中使用 iterrows() 或 itertuples() 才能得到这个,但我不确定,而 scipy cdist 可以得到距离。
最佳答案
您可以使用pd.merge()
加入数据框,然后使用df.loc
。以下是如何使用数据框执行此操作:
df3 = pd.merge(df1,df2,on='time',how='inner')
df4 = df3.loc[df3['time'] == 1.0]
df4[['circle','square','time']].head()
您可以使用inplace=True
优化上述代码。
关于python - 循环遍历 pandas Dataframe 以从另一个 Dataframe 获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49279387/