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

多行列转行并将type与表头拼接为单行的实现需求

需求说明

需要将多行数据转换为宽表格式,将type字段与原有表头拼接形成新表头(如num x A),最终将同一name的多条数据合并为单行,同时去除日期字段的时分秒部分。


原始数据

typenamenumagedateADateBPRICE
AAziz1122012-01-11 00:00:00.0002012-01-11 00:00:00.000129.00
BAziz1342012-01-11 00:00:00.0002012-01-11 00:00:00.000100.00
CAziz0202012-01-11 00:00:00.0002012-01-11 00:00:00.000349.00
DAziz1902012-01-11 00:00:00.0002012-01-11 00:00:00.000222.00

期望结果

namenum x Aage x AdateA x ADateB x APRICE x Anum x Bage x BdateA x BDateB x BPRICE x Bnum x Cage x CdateA x CDateB x CPRICE x Cnum x Dage x DdateA x DDateB x DPRICE x D
Aziz1122012-01-112012-01-11129.001342012-01-112012-01-11100.000202012-01-112012-01-11349.001902012-01-112012-01-11222.00

实现方法

方法一:使用Excel Power Query

  1. 将数据导入Excel,选中数据区域,点击「数据」选项卡 → 「从表格/区域」,进入Power Query编辑器。
  2. 处理日期字段:选中dateA和DateB列,点击「转换」选项卡 → 「日期」→ 「提取」→ 「日期仅」,去除时分秒部分。
  3. 转置为宽表:选中name列,点击「转换」选项卡 → 「透视列」,弹出窗口中:
    • 值列选择num、age、dateA、DateB、PRICE
    • 高级选项选择「不要聚合」
    • 生成的表头为字段名.type格式,选中所有透视后的列,右键「重命名」,批量替换.为x。
  4. 点击「关闭并上载」,得到目标格式数据。

方法二:使用Python pandas

import pandas as pd

# 加载原始数据(实际场景可从Excel/CSV文件读取)
data = [
    {"type": "A", "name": "Aziz", "num": 1, "age": 12, "dateA": "2012-01-11 00:00:00.000", "DateB": "2012-01-11 00:00:00.000", "PRICE": 129.00},
    {"type": "B", "name": "Aziz", "num": 1, "age": 34, "dateA": "2012-01-11 00:00:00.000", "DateB": "2012-01-11 00:00:00.000", "PRICE": 100.00},
    {"type": "C", "name": "Aziz", "num": 0, "age": 20, "dateA": "2012-01-11 00:00:00.000", "DateB": "2012-01-11 00:00:00.000", "PRICE": 349.00},
    {"type": "D", "name": "Aziz", "num": 1, "age": 90, "dateA": "2012-01-11 00:00:00.000", "DateB": "2012-01-11 00:00:00.000", "PRICE": 222.00}
]
df = pd.DataFrame(data)

# 处理日期字段,去除时分秒
df['dateA'] = pd.to_datetime(df['dateA']).dt.date
df['DateB'] = pd.to_datetime(df['DateB']).dt.date

# 透视转换为宽表,拼接表头
df_pivot = df.pivot(index='name', columns='type', values=['num', 'age', 'dateA', 'DateB', 'PRICE'])
df_pivot.columns = [f"{col[0]} x {col[1]}" for col in df_pivot.columns]

# 重置索引,让name成为普通列
df_result = df_pivot.reset_index()

# 打印结果或保存到文件
print(df_result)
# df_result.to_excel('转换结果.xlsx', index=False)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 10:05:28