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

如何将相同Code的多行数据转换为含重复CaseNumber、Discount列的结构?

Hey,这个需求完全能搞定!我给你分享两种实用的实现方法,分别适配Python(用Pandas库)和Excel场景,你可以按需选择:

方案1:Python Pandas 实现

如果你习惯用代码处理数据,Pandas是个非常高效的选择:

  1. 先把原始数据转换成标准的DataFrame格式(原始数据是空格分隔的,我们先拆分并整理成三列):
import pandas as pd

# 原始数据,按空格拆分后每3个元素为一行
raw_data = "123 1 10 123 2 20 123 3 30 456 4 40 456 5 50 456 6 60".split()
rows = [raw_data[i:i+3] for i in range(0, len(raw_data), 3)]
df = pd.DataFrame(rows, columns=["Code", "CaseNumber", "Discount"])
  1. 按Code分组,把每组的CaseNumber和Discount拼接成连续的字符串,再和Code组合:
# 定义分组后的聚合函数
def concat_rows(group):
    # 先把CaseNumber和Discount两两配对,再拼接成空格分隔的字符串
    pairs = [f"{cn} {d}" for cn, d in zip(group["CaseNumber"], group["Discount"])]
    # 把Code和所有配对结果拼接在一起
    return f"{group['Code'].iloc[0]} {' '.join(pairs)}"

# 分组聚合并输出结果
result = df.groupby("Code").apply(concat_rows).tolist()
# 打印最终结果,每个Code对应一行
for line in result:
    print(line)

运行这段代码后,就能得到你想要的输出:

123 1 10 2 20 3 30
456 4 40 5 50 6 60
方案2:Excel 实现

如果你更习惯用Excel处理表格,可以这样操作:

  1. 先把原始数据粘贴到Excel中,整理成三列(A列:Code,B列:CaseNumber,C列:Discount),确保6行数据正确对应。

  2. 在D列提取唯一的Code值:在D2单元格输入=UNIQUE(A2:A7),回车后会自动生成唯一的Code列表(123和456)。

  3. 在E列拼接对应的数据:在E2单元格输入以下公式,然后按Ctrl+Shift+Enter(旧版Excel),或者直接回车(新版Excel支持动态数组):

=TEXTJOIN(" ", TRUE, IF($A$2:$A$7=D2, $B$2:$C$7, ""))

这个公式会筛选出所有和D2单元格Code匹配的CaseNumber和Discount,并用空格拼接成连续的字符串。

  1. 最后把D列和E列的内容合并(比如在F2单元格输入=D2&" "&E2),就能得到你想要的单行格式啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:25:06