You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pandas如何为DataFrame每行生成多条矩形角点坐标数据

解决方案

直接用apply生成角点列表后调用explode炸开即可,代码简洁高效,无需手动循环处理每个对象:

完整实现代码

import pandas as pd

# 构造测试数据(你实际使用时替换为自己的df即可)
df = pd.DataFrame({
    'Thing': ['A', 'B'],
    'x': [1, 2],
    'y': [3, 3],
    'length_x': [1, 2],
    'length_y': [2, 1]
})

def generate_corners(row):
    lx_half = row['length_x'] / 2
    ly_half = row['length_y'] / 2
    x, y = row['x'], row['y']
    # 按你给出的坐标顺序生成5个点,最后一个重复第一个用于闭合POLYGON
    return [
        (x + lx_half, y),
        (x + lx_half, y - ly_half),
        (x - lx_half, y),
        (x - lx_half, y - ly_half),
        (x + lx_half, y)
    ]

# 生成角点列并炸开
df['corners'] = df.apply(generate_corners, axis=1)
df = df.explode('corners', ignore_index=True)

# 拆分角点为x、y两列,调整输出列顺序
df[['Corner_x', 'Corner_y']] = pd.DataFrame(df['corners'].tolist(), index=df.index)
df = df[['Thing', 'x', 'y', 'Corner_x', 'Corner_y', 'length_x', 'length_y']]

print(df)

输出验证

运行后输出结果与你要求的结构完全一致,若角点顺序不符合你的使用需求,只需调整generate_corners函数中返回列表的元组顺序即可。


内容的提问来源于stack exchange,提问作者Serge de Gosson de Varennes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 15:57:02