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

Pandas如何将DataFrame每两行合并为独立列 相同x/y行合并生成u/v列

pandas 同坐标行拆分为u、v列实现方案

如果你的数据中每个(x,y)坐标对固定对应2条data记录,需要将两条记录分别映射为u、v列,可直接用以下方法实现:


方法1:通用鲁棒方案(不依赖原始行顺序)

通过分组标记+透视的方式实现,哪怕同坐标的两行在原始表中不相邻也能正确匹配:

import pandas as pd

# 1. 给每个相同x、y分组内的行按顺序打标记,第一条标记为0,第二条标记为1
df['row_tag'] = df.groupby(['x', 'y']).cumcount()

# 2. 按标记把data列拆分为u、v两列
df_result = df.pivot(index=['x', 'y'], columns='row_tag', values='data').reset_index()

# 3. 重命名列得到最终结果
df_result.columns = ['x', 'y', 'u', 'v']

运行后输出结果和示例预期完全一致:

xyuv
110.20.5
120.70.2

方法2:快速切片方案(仅适用于严格有序数据)

如果你的原始数据严格按照「同x、y的两行连续排列」的规则存储,没有乱序、没有缺失/多余记录,可以直接用步长切片实现,性能更高:

df_result = pd.DataFrame({
    'x': df['x'].iloc[::2].values,
    'y': df['y'].iloc[::2].values,
    'u': df['data'].iloc[::2].values,
    'v': df['data'].iloc[1::2].values
})

异常排查

如果运行后u或v列出现空值,说明存在部分(x,y)坐标对应的记录数不是2条,可运行以下代码检查异常数据:

# 统计每个坐标对应的记录条数
print(df.groupby(['x', 'y']).size())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 00:27:24