微信群又双叕有新问题了,如图所示,两个表格的转换。
首先跟大家分享一下我的记忆口诀:
- 行转列逆透视
- 列转行透视
我们用Excel、Python、SQL分别实现一下上图的要求。
Excel
使用到Excel中的Power Query,只有Excel2016以上的版本才有,注意版本号。
行转列
全选数据>数据选项卡>自表格/区域
由于要转换的列是由"/"分割的,所以我们需要先拆分列。选中需要拆分的列>右键>拆分列>按分隔符。
选择自定义>输入"/">选择每次出现分隔符时>确定
选中标题行>右键>逆透视其他列 也可以多选中值列选择逆透视
删除多于列>关闭并上载,完成。
列转行
这边暂且只想到添加辅助列来实现该效果,有更好的方法欢迎在评论区留言。
同样多选进入Power Query界面,添加列>自定义列>输入"=[值]">确定
相当于是复制一列值,列名自定义,自定义公式内的值根据原表列名来。
选中“值”>透视列>“值列”选择自定义>聚合值函数选择不要聚合>确定
第一步也可以选择“自定义”列,如果这样操作的话,在第三步就要选择"值",这里列名没有起好,请大家看清楚。
选中透视出来的列>右键>合并列>自定义分隔符>确定
选中合并后的列>右键>替换值>要查找的列输入"//">确定>关闭并上载
完成 。
Python
行转列
import
# 根据'/'拆分为列表
列转行
df_new
explode()函数在pandas0.25.0之后才支持,除了这个方法俺想不到别的方法了。
SQL
行转列
-- 建表,插入数据
SELECT
列转行
用刚刚查询出来的结果我们再创建一个temp2。
DROP