【问题标题】:Melt pandas dataframe multiple times [closed]多次融化熊猫数据框[关闭]
【发布时间】:2020-08-13 17:21:30
【问题描述】:

我有一个数据框 df:

Item   Name  Location  Jan-Units  Feb-Units  Mar-Units  Jan-Rev  Feb-Rev  Mar-Rev  Jan-Trl  Feb-Trl  Mar-Trl
123    ABC   CA        20         30        40          100      150      200      1.00     1.50     2.00
456    DEF   AZ        25         35        45          125      175      225      1.25     1.75     2.25

我需要多次熔化此 df,保持前 3 列相同,并根据熔化列的前 3 个字符添加日期列。输出应该是:

Item    Name  Location  Date        Units  Rev   Trl
123     ABC   CA        01/01/2020  20     100   1.00
123     ABC   CA        02/01/2020  30     150   1.50
123     ABC   CA        03/01/2020  40     200   2.00
456     DEF   AZ        01/01/2020  25     125   1.25
456     DEF   AZ        02/01/2020  35     175   1.75
456     DEF   AZ        03/01/2020  45     225   2.25

(实际的df有2020年的所有月份和数百行)

【问题讨论】:

    标签: python pandas pivot reshape melt


    【解决方案1】:

    首先重塑你的列,然后使用pd.wide_to_long

    df.columns = ["-".join(i.split("-")[::-1]) for i in df.columns]
    
    print (pd.wide_to_long(df, stubnames=["Units","Rev","Trl"],
                           i=["Item","Name"], j="Date",
                           sep="-", suffix="\w+")
           .reset_index())
    
       Item Name Date Location  Units  Rev   Trl
    0   123  ABC  Jan       CA     20  100  1.00
    1   123  ABC  Feb       CA     30  150  1.50
    2   123  ABC  Mar       CA     40  200  2.00
    3   456  DEF  Jan       AZ     25  125  1.25
    4   456  DEF  Feb       AZ     35  175  1.75
    5   456  DEF  Mar       AZ     45  225  2.25
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-27
      • 2018-06-21
      相关资源
      最近更新 更多