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

使用Pandas实现多列客户订单数据的索引统一与格式规范化

Pandas宽表转长表:多订单列转成行记录

嗨,这个需求在Pandas里用melt()函数就能轻松搞定,这是处理宽格式数据转长格式的标准工具,我给你一步步演示:

1. 先构造示例数据(模拟你的原始数据)

首先我们创建和你格式一致的测试数据,方便你直接运行验证:

import pandas as pd

# 模拟你的原始客户订单数据
raw_data = {
    "Customer": ["John", "Shelly"],
    "Order1": ["This", "Thing1"],
    "Order2": ["That", "Thing2"],
    "Order3": ["The", "Thing3"]
}
df_raw = pd.DataFrame(raw_data)

2. 使用melt()完成转换

melt()的核心是指定保持不变的标识列和需要拆分成行的列,代码如下:

# 执行宽转长操作
df_transformed = df_raw.melt(
    id_vars="Customer",  # 这个列会保留在每行,作为客户标识
    value_vars=[col for col in df_raw.columns if col.startswith("Order")],  # 所有以Order开头的列都要拆分成行
    value_name="Order"  # 拆分后的值列命名为"Order"
)

# 可选:如果不需要原来的Order1/Order2这些列名(也就是默认生成的"variable"列),直接删掉
df_transformed = df_transformed.drop(columns="variable")

3. 转换后的结果

运行上面的代码后,你会得到完全符合需求的结构:

Customer    Order
0     John     This
1   Shelly   Thing1
2     John     That
3   Shelly   Thing2
4     John      The
5   Shelly   Thing3

小技巧

如果你的订单列是严格按Order1、Order2...OrderN排列在Customer列之后,那value_vars可以简化成df_raw.columns[1:],不用写列表推导式,效果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:04:40