代码之家  ›  专栏  ›  技术社区  ›  barciewicz

pandas:根据另一列的值将列拆分为较小的列[重复]

  •  0
  • barciewicz  · 技术社区  · 6 年前

    这个问题已经有了答案:

    我有以下熊猫数据框:

    import pandas
    
    df = pandas.DataFrame({'Status': ['Draft', 
       'Active','Completed','Completed', 'Draft', 'Active'], 'Region': 
       ['Europe','Europe', 'Asia','Australia', 'Asia', 'Australia'],'Budget': [1000,
       2000,3000,4000,5000,6000]})
    

    我将其分组和聚合如下:

    grouped_by_region = df.groupby('Region').agg({'Budget':sum})
    

    所以 print(grouped_by_region) 是:

    Region    Budget
    
    Asia         8000
    Australia   10000
    Europe       3000
    

    我要做的是将预算列拆分为“预算草稿”、“预算活动”、“预算完成”列。因此,基本上我需要创建基于“status”列值的新列,并相应地重命名它们。

    如何做到这一点?

    1 回复  |  直到 6 年前
        1
  •  0
  •   sacuL    6 年前

    IIUC,你可以添加 Status 到您的groupby和unstack:

    df.groupby(['Region', 'Status']).agg({'Budget':sum}).unstack(fill_value=0)
    
              Budget                
    Status    Active Completed Draft
    Region                          
    Asia           0      3000  5000
    Australia   6000      4000     0
    Europe      2000         0  1000
    

    虽然 pivot 在评论中提出的解决方案同样有效