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

如何将Pandas DataFrame中的N组列转换为行并拆分数据

拆分Pandas DataFrame单行数据的解决方案

可以使用Pandas内置的pd.wide_to_long()函数,它专门针对这种带重复前缀+后缀的宽表转长表场景设计,能完美适配你这种不确定地块数量的需求。

步骤1:构造示例数据

import pandas as pd

data = {
        'key':['k1', 'k2'],
        'plot_name_1':['name', 'name'],
        'plot_area_1':[1,2],
        'plot_name_2':['name', 'name'],
        'plot_area_2':[1,2],
        'plot_name_n':['name', 'name'],
        'plot_area_n':[1,2]
       }

df = pd.DataFrame(data)

步骤2:宽表转长表

# 转换长表,suffix匹配任意字母/数字(适配1、2、n这类编号)
df_long = pd.wide_to_long(
    df,
    stubnames=['plot_name', 'plot_area'],  # 列名的前缀部分
    i='key',  # 作为分组标识的列
    j='plot_number',  # 从列名后缀提取的新列名
    sep='_',  # 前缀和后缀的分隔符
    suffix=r'\w+'  # 匹配后缀的正则,\w+表示任意字母/数字
)

# 重置索引,将plot_number从索引转为普通列
df_long = df_long.reset_index()

# 调整列顺序,和目标结果对齐(可选)
df_long = df_long[['key', 'plot_number', 'plot_name', 'plot_area']]

最终结果

运行后得到的df_long完全符合你的需求:

key plot_number plot_name  plot_area
0   k1           1      name          1
1   k1           2      name          2
2   k1           n      name          1
3   k2           1      name          2
4   k2           2      name          2
5   k2           n      name          2

适配实际场景说明

如果你的实际地块编号是纯数字(比如1到8),可以把suffix参数改成r'\d+',这样只会匹配数字后缀,更精准。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 17:25:21