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
相关产品推荐
相关产品推荐

