如何使用pandas将按行存储的属性数据转换为按特征分组的宽表格式
pandas结构转换方案
实现思路
原始数据严格按照Name/Number/Age每3行对应一个完整特征记录的规则排列,先给每3行分配同一个特征分组标识,再通过透视操作直接转换为目标宽表结构即可。
完整代码实现
import pandas as pd # 此处替换为你自己的原始DataFrame读取逻辑,下方为示例测试数据 df = pd.DataFrame({ 'Column 1': ['Name', 'Number', 'Age', 'Name', 'Number', 'Age'], 'Column 2': ['A', 'B', 'C', 'D', 'E', 'F'] }) # 生成特征分组编号,每3行归为同一组 df['feature_group'] = 'Feature ' + (df.index // 3 + 1).astype(str) # 透视转换为目标结构 res = df.pivot( index='feature_group', columns='Column 1', values='Column 2' ) # 调整列顺序、去除多余轴名,匹配要求的输出格式 res = res[['Name', 'Number', 'Age']].rename_axis(index=None, columns=None)
输出验证
执行后打印res即可得到目标结构:
Name Number Age Feature 1 A B C Feature 2 D E F
特殊情况适配
如果数据不是严格按3行一组循环的规则排列,可以先筛选Column 1 == 'Name'的行索引作为分组起点,重新生成连续的分组编号即可,常规规则数据下上述代码可直接运行。
内容的提问来源于stack exchange,提问作者gandycraby1234703
相关产品推荐
相关产品推荐

