Python中拆分列标题数字与字符串并创建trial列的方法
Pandas 宽格式转长格式并提取trial列
要实现将宽表转换为长表,同时从列名中提取数字作为trial列,使用pandas.wide_to_long是最简洁高效的方案,专门适配这种带分隔符的结构化列名场景。
完整实现代码
import pandas as pd # 原宽格式数据 before_spliting = { "ID": [1, 2, 3], "2.0__sum_values": [33, 28, 40], "2.0__mediane": [33, 70, 20], "2.0__root_mean_square": [33, 4, 30], "3.0__sum_values": [33, 28, 40], "3.0__mediane": [33, 70, 20], "3.0__root_mean_square": [33, 4, 30] } before_spliting = pd.DataFrame(before_spliting) # 转换操作 after_spliting = pd.wide_to_long( before_spliting, stubnames=['sum_values', 'mediane', 'root_mean_square'], i='ID', j='trial', sep='__' ).reset_index() # 将trial列从浮点数转为整数 after_spliting['trial'] = after_spliting['trial'].astype(int) # 输出结果 print(after_spliting)
输出结果
ID trial sum_values mediane root_mean_square 0 1 2 33 33 33 1 1 3 33 33 33 2 2 2 28 70 4 3 2 3 28 70 4 4 3 2 40 20 30 5 3 3 40 20 30
关键步骤说明
pd.wide_to_long:自动识别列名中__分隔的前缀(2.0、3.0)和后缀(sum_values等),将前缀提取为trial列,后缀作为长表的字段i='ID':指定保留的索引列,确保每个ID对应多行不同trial的数据j='trial':定义从列名前缀提取的新列名称astype(int):将提取的浮点型trial值(2.0、3.0)转换为整数,匹配目标格式reset_index():将ID和trial从索引转为普通列,符合最终输出结构
内容的提问来源于stack exchange,提问作者user3263335
相关产品推荐
相关产品推荐

