Power BI中如何将相同值的行转换为新列?
人口数据格式转换解决方案
方法一:Excel Power Query(可视化操作)
- 选中原始数据区域,点击数据选项卡 → 从表格/区域,确认数据包含表头后进入Power Query编辑器。
- 选中
年份列(唯一保留的标识列),右键选择逆透视其他列,此时数据会变成三列:年份、属性、值。 - 选中
属性列,点击转换选项卡 → 拆分列 → 按分隔符,输入分隔符岁,选择“拆分为列”且拆分位置为“最右侧的分隔符”,得到属性.1和属性.2两列。 - 选中
属性.1列,点击转换→格式→添加后缀,输入岁,然后将该列重命名为年龄段。 - 将
属性.2列重命名为性别,删除原属性列,调整列顺序为年份、年龄段、性别、值。 - 点击主页选项卡 → 关闭并上载,转换后的数据就会导入到新的工作表中。
方法二:Python pandas(代码方式)
如果习惯用代码处理,用pandas可以快速完成转换:
import pandas as pd # 读取原始数据(假设是CSV格式,根据实际文件类型调整) df = pd.read_csv("人口原始数据.csv") # 逆透视:将年份以外的列转为行 df_unpivot = df.melt(id_vars=["年份"], var_name="类别", value_name="数值") # 拆分类别列,提取年龄段和性别/总人口信息 df_unpivot[["年龄段", "性别"]] = df_unpivot["类别"].str.extract(r"([\d-]+岁)(.*)") # 整理列顺序并删除冗余列 df_final = df_unpivot[["年份", "年龄段", "性别", "数值"]].dropna() # 保存转换后的数据 df_final.to_csv("人口转换后数据.csv", index=False)
如果原始列名格式和示例略有不同(比如分隔符不是“岁”),可以调整拆分规则,比如用空格或其他分隔符匹配。
内容的提问来源于stack exchange,提问作者Guziko
相关产品推荐
相关产品推荐

