首页 > 解决方案 > 转置几列并重塑它们

问题描述

我希望通过保持某些列固定来转置我的数据框中的某些列及其值。

WO.No           LineSubType      ProductName  Desc  Problem
WO-00201182     P-A-T                        
WO-00201182     Parts           18112135     FLOW  Liquid
WO-00201182     Parts           18112200    ArmF9  Liquid

结果表

WO.No           LineSubType     ProductName+Desc1 ProductName+Desc2  Problem
WO-00201182     P-A-T/Parts     18112135 + FLOW  18112200 + ArmF9   Liquid             

在此处输入图像描述

标签: python-3.xpandasdataframetransposemelt

解决方案


  • 使用了自加入的方法
  • 如果需要,显然可以将子类型列合并为一个
df = pd.read_csv(io.StringIO("""WO.No           LineSubType  LineNumber    ProductName  Desc  Problem
WO-00201182     P-A-T        WL-01014402                
WO-00201182     Parts        WL-01014744   18112135     FLOW  Liquid"""), sep="\s+")


df = (
    df.loc[df["LineSubType"].eq("P-A-T")]
    .drop(columns=["ProductName", "Desc", "Problem"])
    .merge(
        df.loc[df["LineSubType"].eq("Parts")],
        on="WO.No",
        suffixes=(" .P.A.T.", " Parts"),
    )
)

df

WO.No LineSubType .PAT 线号 .PAT LineSubType 零件 LineNumber 零件 产品名称 描述 问题
0 WO-00201182 WL-01014402 部分 WL-01014744 1.81121e+07 流动 液体

推荐阅读