如何将两列多行的结构化数据转换为单行多列的输出格式
双列转置为宽表的实现方法
Excel/WPS 可视化操作
- 选中全部原始数据(包含表头行),点击「数据」选项卡下的「数据透视表」功能
- 透视表配置:行区域留空,列区域拖入
target字段,值区域拖入type字段,值汇总方式选择「最大值」或「最小值」即可(文本类型数据不会被数值计算,会直接返回对应原值) - 若需要保留两行中间的分割线,手动在表头和值行之间插入一行,对应单元格填充短横线即可。
Python Pandas 代码实现
import pandas as pd # 读取原始数据,sep='\s+'适配多空格分隔的格式,skiprows跳过原始数据中的分割线行 df = pd.read_csv("原始数据文件路径", sep="\s+", skiprows=[1]) # 转置处理 result_df = df.set_index("target").T.reset_index(drop=True) # 输出对齐后的结果,也可直接用to_csv导出为文件 print(result_df.to_string(index=False))
Shell 命令行实现(适合Linux/Mac环境)
awk ' # 跳过表头和分割线前两行 NR <= 2 { next } # 分别存储target和type的值 { keys[NR-2] = $1 values[NR-2] = $2 } END { # 打印第一行target值 for (i = 1; i <= length(keys); i++) printf "%-8s", keys[i] print "" # 打印分割线 for (i = 1; i <= length(keys); i++) printf "%-8s", "------" print "" # 打印type值 for (i = 1; i <= length(values); i++) printf "%-8s", values[i] print "" } ' 原始数据文件路径
内容的提问来源于stack exchange,提问作者auntR
相关产品推荐
相关产品推荐

