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

Pandas中对同一列交替升降序的蛇形网格排序实现方法问询

蛇形网格测量数据排序实现方案
实现思路
  • 核心逻辑是构造辅助排序列,利用Y值的奇偶性调整X的排序权重:Y为偶数时保留原X值对应升序排序,Y为奇数时取X的负值对应降序排序
  • 最终按Y position升序、辅助列升序排序,即可得到符合蛇形测量时序的结果
完整代码示例
import pandas as pd

# 构造示例数据
df = pd.DataFrame({
    'X position': [0, 0, 1, 1],
    'Y position': [0, 1, 0, 1],
    'Data': ["'1st'", "'4th'", "'2nd'", "'3rd'"]
})

# 生成辅助排序字段
df['sort_helper'] = df.apply(lambda row: row['X position'] if row['Y position'] % 2 == 0 else -row['X position'], axis=1)
# 执行排序并删除辅助字段
df_sorted = df.sort_values(by=['Y position', 'sort_helper']).drop(columns='sort_helper')

print(df_sorted)

运行后输出结果如下:

X position  Y position   Data
0           0           0  '1st'
2           1           0  '2nd'
3           1           1  '3rd'
1           0           1  '4th'
拓展说明

如果你的Y值不是从0开始的连续整数,只需要先对Y去重排序后给每个Y值映射一个连续序号,用这个序号的奇偶性来生成辅助列即可适配所有场景。

内容的提问来源于stack exchange,提问作者potatopowered

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 22:54:04