You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何使用Python或Excel实现数据集的行列格式转换(宽表转长表)

宽表转长表:Python和Excel实现方案

我来给你详细讲讲怎么把这种宽格式的表格转换成需要的长格式,两种方法都很实用,看你需求选👇

方法一:Python实现(适合批量/大量数据)

如果经常处理数据分析,用pandas库最快,几步就能搞定:

  1. 先处理数据的空值填充:原表格里categorySub-category的空单元格是继承上方内容的,读入后需要先把这些空值补上。
  2. melt函数转长表:这是pandas专门用来做宽转长的工具,指定固定的列作为标识,把年份列转成行。

代码示例

import pandas as pd

# 假设你的数据存在Excel里,读取时注意表头
df = pd.read_excel("你的数据文件.xlsx", header=0)

# 向前填充空值,补全category和Sub-category的内容
df[['category', 'Sub-category']] = df[['category', 'Sub-category']].ffill()

# 执行宽转长:id_vars是要保留的列,var_name是年份列的名称,value_name是数值列的名称
long_df = df.melt(
    id_vars=['category', 'Sub-category', 'Variable'],
    var_name='year',
    value_name='vals'
)

# 查看结果或者保存
print(long_df)
long_df.to_excel("转换后的长表.xlsx", index=False)

执行完后,你就能得到想要的长表格式,空值也会自动对应正确的分类~

方法二:Excel实现(适合小数据手动处理)

如果不想写代码,用Excel自带的Power Query工具(2016及以后版本自带,旧版本可以装插件)就能搞定:

步骤1:补全空单元格

原表格里categorySub-category的空单元格是继承上方内容的,先把这些空值补上:

  • 选中categorySub-category的所有单元格(包括空的)
  • Ctrl+G打开定位窗口,点击「定位条件」→ 选择「空值」→ 确定
  • 此时所有空单元格被选中,直接输入=A2(假设第一个空单元格在A3,上方的内容在A2),然后按Ctrl+Enter,所有空值会自动填充上方的内容

步骤2:用Power Query逆透视

  • 选中整个数据区域(包括表头)
  • 点击「数据」选项卡 → 选择「从表格/区域」(如果弹出提示“表包含标题”,勾选后确定)
  • 进入Power Query编辑器后,按住Ctrl选中199019911992这三列
  • 点击「转换」选项卡 → 选择「逆透视列」(如果看不到,找「逆透视其他列」也可以)
  • 此时列名会变成「Attribute」和「Value」,双击列名改成yearvals
  • 点击「关闭并上载」,转换后的长表就会出现在新的工作表里啦

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

火山引擎 最新活动