当前位置:首页>python>实用Python代码2:长格式表转宽格式表

实用Python代码2:长格式表转宽格式表

  • 2026-08-28 05:23:42
实用Python代码2:长格式表转宽格式表

上一次我们用Python代码,解决了怎么把宽格式表转成长格式表。在日常科研和学习中,也会遇到需要把长格式表转成宽格式表,如下这样的转换:

直接上干货:

import pandas as pdimport numpy as np# ========== 配置区 ==========input_txt = "long_in.txt"    # 输入长格式txt文件名output_txt = "wide_out.txt"  # 输出宽格式txt文件名    sep_in = r"\s+"     # 输入文件空格分隔,自动匹配多空格sep_out = "\t"      # 输出用制表分隔,可读性更强# ==========================# 读取长格式三列表格:x, y_name, y_val# 1、如果输入文件有表头时,读取以下代码:df_long = pd.read_csv(input_txt, sep=sep_in)# 2、如果输入文件无表头时,读取以下代码:# df_long = pd.read_csv(input_txt, sep=sep_in, names=["x", "y_name", "y_val"])# 按数值排序分组标签group_names = sorted(df_long["y_name"].unique(), key=lambda s: float(s))group_subtables = []max_rows = 0# 拆分每组 [x, y_val]for g in group_names:    sub = df_long[df_long["y_name"] == g][["x", "y_val"]].reset_index(drop=True)    group_subtables.append(sub)    if len(sub) > max_rows:         max_rows = len(sub)# 统一填充到最大行数,不足行补NaNpadded_groups = []for sub in group_subtables:    n_pad = max_rows - len(sub)    pad_df = pd.DataFrame(np.full((n_pad, 2), np.nan), columns=["x", "y_val"])    full_sub = pd.concat([sub, pad_df], ignore_index=True)    padded_groups.append(full_sub)# 横向拼接全部分组df_wide = pd.concat(padded_groups, axis=1)# 重命名表头:x,2,x,2.2,x,2.4...new_cols = []for g in group_names:    new_cols.extend([x, str(g)])    df_wide.columns = new_cols# 导出df_wide.to_csv(output_txt, sep=sep_out, index=False)print(f"已输出,最大行数:{max_rows},分组:{group_names}")print(df_wide.head(15))

喜欢请评论、关注、点赞、收藏和转发❤️。评论+私信,可索取打包好的 exe 可执行程序,无需安装 Python 及依赖库,双击直接运行,有空必回。

最新文章

随机文章