Python 合并数据透视表
我有这样一个数据帧:Python 合并数据透视表,python,pandas,pivot-table,Python,Pandas,Pivot Table,我有这样一个数据帧: 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 ...... 我正在寻找的结果将是一个按功能统计结果的轴心,以及执行次数的总和。像这样 Application|Category|Feature|Count of PASS|Count
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
......
我正在寻找的结果将是一个按功能统计结果的轴心,以及执行次数的总和。像这样
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])
您不需要在此处合并结果,您可以使用单个pivot_表或groupby/apply创建结果。我没有你的数据,但这能满足你的需要吗
pivot = pd.pivot_table(df, index=["Application","Category","Feature"],
values = ["Final_Result", "Exec_time_mins"],
aggfunc = [len, np.sum])
谢谢你的回复。嗯,它部分地解决了这个问题。我得到3列:len.Exec\u time、len.Final\u Result和sum.Exec\u time。我还需要将最终结果分解为通过和失败的计数。有了这个解决方案,我只得到了一些测试。想在这里添加一个scrshot,但看起来我做不到。哇,从来没有想过使用groupby!这很好用,非常感谢!
#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