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

如何使用Pandas循环对DataFrame列进行排序与分组拼接

问题与解决方案

原始数据与目标格式

原始DataFrame

AreaSequenceXY
A2604582.25320710
A1604590.25320704.75
A3604579.25320710
B2536584.47176977.83
B1536570176996.43
C1509202.13307995.99
C2509205.3307951.24

目标DataFrame

AreaXY_by_sequence
A604590.25 320704.75 , 604582.25 320710 , 604579.25 320710
B536570 176996.43 , 536584.47 176977.83
C509202.13 307995.99 , 509205.3 307951.24

循环实现方法

按照要求,使用循环完成排序与分组的步骤如下:

  • 先对原始数据按Area和Sequence升序排序,确保每个区域内的记录按序号排列
  • 提取所有唯一的Area值,逐个遍历
  • 针对每个Area,筛选出对应行,将每行的X、Y值拼接为字符串,再用,连接所有行的拼接结果
  • 收集所有区域的结果,转换为目标格式的DataFrame

代码实现:

import pandas as pd

# 构造原始数据
df1 = pd.DataFrame({
    'Area': ['A', 'A', 'A', 'B', 'B', 'C', 'C'],
    'Sequence': [2, 1, 3, 2, 1, 1, 2],
    'X': [604582.25, 604590.25, 604579.25, 536584.47, 536570, 509202.13, 509205.3],
    'Y': [320710, 320704.75, 320710, 176977.83, 176996.43, 307995.99, 307951.24]
})

# 排序:先按Area,再按Sequence升序
df_sorted = df1.sort_values(by=['Area', 'Sequence'])

# 初始化结果列表
result = []

# 遍历每个唯一Area
for area in df_sorted['Area'].unique():
    # 获取当前Area的所有行
    subset = df_sorted[df_sorted['Area'] == area]
    # 拼接每行的X和Y,再合并成一个字符串
    xy_combined = ' ,  '.join([f"{row['X']}  {row['Y']}" for _, row in subset.iterrows()])
    # 添加到结果列表
    result.append({'Area': area, 'XY_by_sequence': xy_combined})

# 转换为目标DataFrame
df_result = pd.DataFrame(result)
print(df_result)

更高效的非循环实现(推荐)

如果没有强制要求使用循环,Pandas的分组聚合方法更简洁且性能更优:

import pandas as pd

df1 = pd.DataFrame({
    'Area': ['A', 'A', 'A', 'B', 'B', 'C', 'C'],
    'Sequence': [2, 1, 3, 2, 1, 1, 2],
    'X': [604582.25, 604590.25, 604579.25, 536584.47, 536570, 509202.13, 509205.3],
    'Y': [320710, 320704.75, 320710, 176977.83, 176996.43, 307995.99, 307951.24]
})

# 排序后分组聚合
df_result = (df1.sort_values(by=['Area', 'Sequence'])
             .groupby('Area')
             .apply(lambda grp: ' ,  '.join([f"{x}  {y}" for x, y in zip(grp['X'], grp['Y'])]))
             .reset_index(name='XY_by_sequence'))

print(df_result)

内容的提问来源于stack exchange,提问作者Vivek kanna Jayaprakash

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 09:53:20