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

如何在Python/Pandas中处理部门周数据结构差异实现合并对比

解决方案:针对部门分组转换周数据格式

根据你的需求,核心是将长表与宽表互相转换,仅处理周数据部分,保留部门的分组逻辑。Pandas的melt(宽表转长表)和pivot/pivot_table(长表转宽表)方法正好能满足这个需求,以下是两种场景的具体实现:

场景1:把Data2(周数据按列分布的宽表)转成Data1的行格式(长表)

假设Data2的结构是部门 + 周1、周2...的列布局,用melt提取周列作为行数据:

import pandas as pd

# 读取数据(替换为你的文件路径)
data2 = pd.read_excel("你的Excel文件.xlsx", sheet_name="Data2")

# 转换:保留部门列,将所有周相关列转为行
data2_transformed = pd.melt(
    data2,
    id_vars=["部门"],          # 固定不转置的列
    var_name="周数",           # 生成的周数据行的列名
    value_name="对应数值"      # 生成的数值列名
)

转换后的数据结构会和Data1完全匹配,可直接用pd.merge合并。

场景2:把Data1(周数据按行分布的长表)转成Data2的列格式(宽表)

如果需要将Data1转成Data2的布局,用pivot或pivot_table实现:

import pandas as pd

# 读取数据(替换为你的文件路径)
data1 = pd.read_excel("你的Excel文件.xlsx", sheet_name="Data1")

# 转换:按部门分组,周数作为列,数值填充对应单元格
data1_transformed = data1.pivot(
    index="部门",
    columns="周数",
    values="数值"
).reset_index()  # 将部门从索引转回普通列

# 清理列名层级(可选)
data1_transformed.columns.name = None

如果Data1中存在同一部门+周数的重复行,用pivot_table加聚合函数处理:

data1_transformed = data1.pivot_table(
    index="部门",
    columns="周数",
    values="数值",
    aggfunc="sum"  # 根据业务需求选sum/mean等聚合方式
).reset_index()
data1_transformed.columns.name = None

合并操作

格式统一后,直接用pd.merge按对应字段合并:

# 假设已转成相同的长表格式
merged_data = pd.merge(data1, data2_transformed, on=["部门", "周数"], how="outer")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 22:46:04