转置几列并重塑它们

时间:2021-07-20 05:33:36

标签: python-3.x pandas dataframe transpose melt

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

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             

enter image description here

1 个答案:

答案 0 :(得分:0)

  • 使用过自连接的方法
  • 如果需要,可以将明确的子类型列合并为一个
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 .P.A.T. LineNumber .P.A.T. LineSubType 部分 LineNumber Parts 产品名称 Desc 问题
0 WO-00201182 P-A-T WL-01014402 部分 WL-01014744 1.81121e+07 FLOW 液体