【问题标题】:merge pandas pivot tables合并熊猫数据透视表
【发布时间】:2017-05-22 19:42:53
【问题描述】:

我有一个这样的数据框:

Application|Category|Feature|Scenario|Result|Exec_Time  
A1|C1|F1|scenario1|PASS|2.3 
A1|C1|F1|scenario2|FAIL|20.3
A2|C1|F3|scenario3|PASS|12.3 
......

我正在寻找的结果将是一个支点,其中包含 Feature 的结果计数以及执行时间的总和。像这样

Application|Category|Feature|Count of PASS|Count of FAIL|SumExec_Time     
A1|C1|F1|200|12|45.62
A1|C1|F2|90|0|15.11
A1|C2|F3|97|2|33.11*

我获得了单独的数据帧来获取结果计数的轴心和按功能划分的执行时间总和,但我无法合并这些数据帧以获得最终的预期结果。

dfr = pd.pivot_table(df,index=["Application","Category","Feature"],
values=["Final_Result"],aggfunc=[len])

dft = pd.pivot_table(df,index=["Application","Category","Feature"],
values=["Exec_time_mins"],aggfunc=[np.sum])

【问题讨论】:

    标签: python pandas pivot-table


    【解决方案1】:

    您不需要在此处合并结果,您可以使用单个 pivot_table 或 groupby/apply 创建它。我没有你的数据,但这能得到你想要的吗?

    pivot = pd.pivot_table(df, index=["Application","Category","Feature"], 
                               values = ["Final_Result", "Exec_time_mins"], 
                               aggfunc = [len, np.sum])
    

    【讨论】:

    • 感谢您的回复。好吧,它部分解决了问题。我得到 3 列:len.Exec_time、len.Final_Result 和 sum.Exec_time。我还需要将最终结果分解为通过和失败的计数。使用此解决方案,我只能获得测试计数。想在这里添加一个 scrshot 但看起来我不能。
    【解决方案2】:
    #Count total records, number of FAILs and total time.
    df2 = df.groupby(by=['Application','Category','Feature']).agg({'Result':[len,lambda x: len(x[x=='FAIL'])],'Exec_Time':sum})
    
    #rename columns
    df2.columns=['Count of PASS','Count of FAIL','SumExec_Time']
    
    #calculate number of pass
    df2['Count of PASS']-=df2['Count of FAIL']
    
    #reset index
    df2.reset_index(inplace=True)
    
    df2
    Out[1197]: 
      Application Category Feature  Count of PASS  Count of FAIL  SumExec_Time
    0          A1       C1      F1              1              1          22.6
    1          A2       C1      F3              1              0          12.3
    

    【讨论】:

    • 哇,从没想过使用 groupby !这工作完美,非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2021-02-28
    • 2023-01-11
    • 1970-01-01
    • 2019-03-03
    • 2017-01-14
    • 2019-04-28
    • 2012-04-15
    相关资源
    最近更新 更多