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

如何实现表格行转列?将member_casual行值转为列的技术咨询

原表格

ymmember_casualride_count
2021 Deccasual25
2021 Decmember42
2022 Jancasual35
2022 Janmember55

目标表格

ymmembercasual
2021 Dec4225
2022 Jan5535

要实现这种行转列(透视表转换),可以用以下几种常用方法:

方法1:Excel/Google Sheets(可视化操作)

  1. 选中所有数据区域(包含表头)
  2. Excel点击「插入」→「透视表」;Google Sheets点击「数据」→「数据透视表」
  3. 在透视表设置面板中:
    • 把ym拖到「行」区域
    • 把member_casual拖到「列」区域
    • 把ride_count拖到「值」区域,确认汇总方式为「求和」(默认就是求和,若不是可手动调整)
  4. 调整列顺序(将member列移到casual前面),即可得到目标格式表格。

方法2:Python Pandas(代码实现)

用pivot函数直接完成透视转换:

import pandas as pd

# 构造原数据
data = [
    ["2021 Dec", "casual", 25],
    ["2021 Dec", "member", 42],
    ["2022 Jan", "casual", 35],
    ["2022 Jan", "member", 55]
]
df = pd.DataFrame(data, columns=["ym", "member_casual", "ride_count"])

# 行转列透视
pivoted_df = df.pivot(
    index="ym",
    columns="member_casual",
    values="ride_count"
).reset_index()

# 调整列顺序匹配目标格式
pivoted_df = pivoted_df[["ym", "member", "casual"]]

print(pivoted_df)

方法3:SQL(数据库端转换)

如果数据存储在数据库中,可通过以下语法实现:

MySQL/PostgreSQL(条件聚合写法)

SELECT
    ym,
    SUM(CASE WHEN member_casual = 'member' THEN ride_count ELSE 0 END) AS member,
    SUM(CASE WHEN member_casual = 'casual' THEN ride_count ELSE 0 END) AS casual
FROM your_table_name
GROUP BY ym
ORDER BY ym;

SQL Server(PIVOT语法)

SELECT ym, member, casual
FROM (
    SELECT ym, member_casual, ride_count
    FROM your_table_name
) AS source
PIVOT (
    SUM(ride_count)
    FOR member_casual IN (member, casual)
) AS pivoted_table
ORDER BY ym;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 18:01:00