如何通过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
相关产品推荐
相关产品推荐

