如何实现表格行转列?将member_casual行值转为列的技术咨询
原表格
| ym | member_casual | ride_count |
|---|---|---|
| 2021 Dec | casual | 25 |
| 2021 Dec | member | 42 |
| 2022 Jan | casual | 35 |
| 2022 Jan | member | 55 |
目标表格
| ym | member | casual |
|---|---|---|
| 2021 Dec | 42 | 25 |
| 2022 Jan | 55 | 35 |
要实现这种行转列(透视表转换),可以用以下几种常用方法:
方法1:Excel/Google Sheets(可视化操作)
- 选中所有数据区域(包含表头)
- Excel点击「插入」→「透视表」;Google Sheets点击「数据」→「数据透视表」
- 在透视表设置面板中:
- 把
ym拖到「行」区域 - 把
member_casual拖到「列」区域 - 把
ride_count拖到「值」区域,确认汇总方式为「求和」(默认就是求和,若不是可手动调整)
- 把
- 调整列顺序(将
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
相关产品推荐
相关产品推荐

