我正在尝试生成一个包含以下结果的数据透视表 想知道我如何计算胜利,失败和抽奖的数量.... 基本上,我想说只有在结果=='胜利'
时才算数我不想将结果列为专栏,因为我不想通过Win / Lost / Draw进行速度分解......有没有办法计算#of
Name Result Win Loss Draw Speed
James 6 2 2 2 50
Bob 9 7 2 0 48
Mary 10 5 3 2 70
这是代码
report = pd.pivot_table(df,index=["Name"], values=["Result", "Speed"], aggfunc= {"Result": len, "Speed": np.mean}, fill_value=0)
提前谢谢
答案 0 :(得分:0)
假设您的数据如下所示:
# sample data
df = pd.DataFrame({
'Name' : ['James']*6 +\
['Bob']*9 +\
['Mary']*10,
'Result' : ['Win']*2 + ['Loss']*2 + ['Draw']*2 +\
['Win']*7 + ['Loss']*2 +\
['Win']*5 + ['Loss']*3 + ['Draw']*2,
'Speed' : [50]*6 +\
[48]*9 +\
[70]*10
})
然后过滤' Win'和枢轴:
# Filter on 'Win'; make pivot table
df[df.Result == 'Win'].pivot_table(index = 'Name',
values = ['Result', 'Speed'],
aggfunc = {'Result' : 'count',
'Speed' : 'mean'},
fill_value = 0).rename(columns = {'Result' : 'Win'})
或者groupby和aggregate:
# groupby.agg()
df[df.Result == 'Win'].groupby('Name').agg({'Result' : 'count',
'Speed' : 'mean'}).rename({'Result' : 'Win'})
结果相同: