You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:如何用Pandas将输入数据转为目标格式?(已尝试归一化无效)

解决方案

核心思路

通过Pandas的wide_to_long函数实现宽表转长表,将带序号的重复特征列(如A1/A2/A3、B1/B2/B3)转换为统一列名的多行结构,再按需完成归一化处理。

步骤代码

  1. 导入依赖并读取数据
import pandas as pd
from sklearn.preprocessing import MinMaxScaler

# 读取输入数据(假设为CSV格式)
df = pd.read_csv("input_data.csv")

# 若数据无样本唯一标识列,手动添加ID
df["ID"] = df.index + 1
  1. 格式转换(关键步骤)
# 将带序号的特征列转换为目标长表格式
df_transformed = pd.wide_to_long(
    df,
    stubnames=["A", "B"],  # 特征列的前缀名称
    i="ID",               # 保留的样本标识列
    j="seq",              # 生成的临时序号列(可后续删除)
    sep=""                # 列名中前缀与序号的分隔符(此处为空)
).reset_index(drop=False).drop("seq", axis=1)
  1. 归一化处理
    若此前归一化未达预期,建议先对同组特征列统一归一化,再执行格式转换:
# 对A系列特征列做归一化
df[["A1", "A2", "A3"]] = MinMaxScaler().fit_transform(df[["A1", "A2", "A3"]])
# 对B系列特征列做归一化
df[["B1", "B2", "B3"]] = MinMaxScaler().fit_transform(df[["B1", "B2", "B3"]])

# 再执行上述格式转换代码
  1. 保存结果
df_transformed.to_csv("output_data.csv", index=False)

补充说明

  • 若你的特征列命名规则不同(如A_1、B_2),需将sep参数设为对应的分隔符(如sep="_")。
  • 若不需要保留ID列,可在reset_index后添加.drop("ID", axis=1)删除。

内容的提问来源于stack exchange,提问作者krishna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 03:03:20