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

如何通过Pandas将含多参数的列逐行合并并实现表格转换

Pandas表格转换与多参数列合并解决方案

核心需求

  • 将表格中用分号分隔多参数的列,逐行拆分后与该行其他字段合并为单列
  • 通过Pandas完成源表格到目标表格的结构转换

参考表格说明

  • 源表格:包含ID、Name、latitude、longitude、robot列,其中robot列存储分号分隔的多参数(如1;2)
  • 目标表格:将robot列的每个参数拆分为单独一行,每行的ID、Name、latitude、longitude与拆分后的参数用*连接成单列(如1*测试*116.3*39.9*1)

原代码问题分析

原代码存在几处逻辑错误:

  • range(len('ID')) 错误取了字符串长度,应该用源DataFrame的行数len(LTE_db)
  • 混淆了LTE_db和robot_db两个数据集,逻辑混乱
  • for j in robot_db['robot'][i] 遍历的是字符串字符而非拆分后的参数列表
  • 直接赋值robot_db['final']会覆盖整列,无法实现逐行添加

正确实现代码

import pandas as pd

# 模拟源表格数据(对应源表结构)
data = {
    'ID': [1, 2],
    'Name': ['测试', '演示'],
    'latitude': [116.3, 117.5],
    'longitude': [39.9, 40.2],
    'robot': ['1;2', '3']
}
LTE_db = pd.DataFrame(data)

# 1. 拆分robot列并展开为多行
LTE_db['robot'] = LTE_db['robot'].str.split(';')
expanded_df = LTE_db.explode('robot', ignore_index=True)

# 2. 合并所有字段为目标单列
expanded_df['final'] = (expanded_df['ID'].astype(str) + '*' +
                       expanded_df['Name'] + '*' +
                       expanded_df['latitude'].astype(str) + '*' +
                       expanded_df['longitude'].astype(str) + '*' +
                       expanded_df['robot'])

# 提取最终结果列(对应目标表结构)
result_df = expanded_df[['final']]
print(result_df)

代码说明

  • str.split(';'):把robot列的字符串拆分为参数列表
  • explode('robot'):将列表中的每个参数拆成单独一行,自动保留其他字段的对应值
  • 字段拼接时,把数值类型转成字符串避免类型错误
  • 最后提取final列即可得到目标表格结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 20:24:31