
正文
python列转行函数 python 列转行
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
python中行列转换时,行标签没有定义
微信群又双叕有新问题了,如图所示,两个表格的转换。
首先跟大家分享一下我的记忆口诀:行转列逆透视
列转行透视
我们用Excel、Python、SQL分别实现一下上图的要求。
Excel
使用到Excel中的Power Query,只有Excel2016以上的版本才有,注意版本号。
行转列
全选数据数据选项卡自表格/区域
由于要转换的列是由"/"分割的,所以我们需要先拆分列。选中需要拆分的列右键拆分列按分隔符。
选择自定义输入"/"选择每次出现分隔符时确定
选中标题行右键逆透视其他列 也可以多选中值列选择逆透视
删除多于列关闭并上载,完成。
列转行
这边暂且只想到添加辅助列来实现该效果,有更好的方法欢迎在评论区留言。
同样多选进入Power Query界面,添加列自定义列输入"=[值]"确定相当于是复制一列值,列名自定义,自定义公式内的值根据原表列名来。
选中“值”透视列“值列”选择自定义聚合值函数选择不要聚合确定第一步也可以选择“自定义”列,如果这样操作的话,在第三步就要选择"值",这里列名没有起好,请大家看清楚。
选中透视出来的列右键合并列自定义分隔符确定
选中合并后的列右键替换值要查找的列输入"//"确定关闭并上载
完成 。
Python
行转列
import pandas as pd
df = pd.DataFrame([['流浪地球', '科幻/冒险/灾难'], ['唐山大地震', '剧情/亲情/灾难']],
columns=['name', 'type'])
df
# 根据'/'拆分为列表
df['type'] = df.type.str.split("/")
df_new = df.explode('type')
df_new
列转行
df_new.groupby(by='name', as_index=False).agg("/".join)explode()函数在pandas0.25.0之后才支持,除了这个方法俺想不到别的方法了。
SQL
行转列
-- 建表,插入数据DROP TABLE IF EXISTS temp;
CREATE TABLE temp ( name varchar(10), type varchar(20) );
INSERT INTO temp VALUES ('流浪地球', '科幻/冒险/灾难'), ('唐山大地震', '剧情/亲情/灾难');
select * from temp;
SELECT a.name
, substring_index(substring_index(a.type, '/', b.help_topic_id + 1), '/', -1) AS type
FROM temp a
JOIN mysql.help_topic b ON b.help_topic_id length(a.type) - length(replace(a.type, '/', '')) + 1
列转行
用刚刚查询出来的结果我们再创建一个temp2。
DROP TABLE IF EXISTS temp2;
CREATE TABLE temp2
(SELECT a.name , substring_index(substring_index(a.type, '/', b.help_topic_id + 1), '/', -1) AS type FROM temp a JOIN mysql.help_topic b ON b.help_topic_id length(a.type) - length(replace(a.type, '/', '')) + 1);
-- 使用group_concat函数实现列转行拼接SELECT name, GROUP_CONCAT(type SEPARATOR '/') AS type
FROM temp2
相关问答
Q1: python 文件列转行
读取文件内容,放到一个list里:
arr = [['a','b','c','d'],['a','b','c','d'],['a','b','c','d']]
result = [[r[col] for r in arr] for col in range(len(arr[0]))]
这里的result就是[['a','a','a'],['b','b','b'],['c','c','c'],['c','c','c']]
或者:
result = map(list, zip(*arr))
最后把这个list写到file2里
Q2: 在做测试自动化时,python数据类型转换函数有几种?
在python中的数据类型转换函数共有五类:
1.float(x) 将x转换为一个浮点数,x如果是一个字符串, 必须是数字类型的字符串
2.int(x) 将x转换为一个整数, x如果是一个字符串,必须是数字类型的字符串
3.str(x) 把x转换为字符串类型, 任意数据类型都可以转换为字符串
4.list(x) 把序列数据x转为列表(注意:字典没有顺序,不是序列数据)
5.tuple(x) 把序列数据x转为元组(字典没有顺序,不是序列数据)
你可以多去黑马程序员视频库看看,里面这样的知识点特别多
关于python列转行函数和python 列转行的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。





