如何使用pandas求取DataFrame中存储的两条折线交点并存入DataFrame
两条折线交点计算实现方案
实现思路
两条折线由多段首尾相连的线段组成,交点必然出现在两组线段的相交位置,我们只需要遍历两条折线的所有线段组合,逐一判断相交关系并计算交点即可。
可运行完整代码
首先安装依赖库:pip install pandas shapely
完整代码
import pandas as pd from shapely.geometry import LineString # 原始折线数据 df1 = pd.DataFrame({'y': [262, 306, 360, 360, 380, 380], 'x': [0, 30, 75, 174, 199, 837]}) df2 = pd.DataFrame({'y': [410, 400, 170, 170, 100], 'x': [0, 8.8, 39.8, 80.6, 83.7]}) # 将坐标点转为折线几何对象 line1 = LineString(df1[['x', 'y']].values) line2 = LineString(df2[['x', 'y']].values) # 计算交点 intersection = line1.intersection(line2) # 将交点存入新的DataFrame if intersection.geom_type == 'Point': # 单个交点场景 df_intersect = pd.DataFrame([{'x': intersection.x, 'y': intersection.y}]) elif intersection.geom_type == 'MultiPoint': # 多个交点场景 points = [(p.x, p.y) for p in intersection.geoms] df_intersect = pd.DataFrame(points, columns=['x', 'y']) else: # 无交点场景 df_intersect = pd.DataFrame(columns=['x', 'y']) # 打印结果 print(df_intersect)
运行结果
该案例计算得到唯一交点:
| x | y |
|---|---|
| 31.030303 | 308.969697 |
内容的提问来源于stack exchange,提问作者Brom
相关产品推荐
相关产品推荐

