我注意到当有多个aggfunc时我无法设置margin = True,如(“count”,“mean”,“sum”)。
它会呕吐KeyError: 'Level None not found'
这是示例代码。
df.pivot_table(values=A,index=[B,C,D],columns=E,aggfunc=("count","mean","sum"),
margins=True,margins_name="Total",fill_value=0)
更新
这是样本df:
[{'Game_ID': 'no.1', 'Results': 0, 'Team': 'B'},
{'Game_ID': 'no.1', 'Results': 0, 'Team': 'A'},
{'Game_ID': 'no.1', 'Results': 0, 'Team': 'B'},
{'Game_ID': 'no.1', 'Results': 0, 'Team': 'B'},
{'Game_ID': 'no.1', 'Results': 1, 'Team': 'A'},
{'Game_ID': 'no.1', 'Results': 0, 'Team': 'A'},
{'Game_ID': 'no.1', 'Results': 0, 'Team': 'A'},
{'Game_ID': 'no.1', 'Results': 0, 'Team': 'B'},
{'Game_ID': 'no.1', 'Results': 0, 'Team': 'B'},
{'Game_ID': 'no.1', 'Results': 0, 'Team': 'B'},
{'Game_ID': 'no.1', 'Results': 1, 'Team': 'A'},
{'Game_ID': 'no.1', 'Results': 0, 'Team': 'A'},
{'Game_ID': 'no.1', 'Results': 1, 'Team': 'A'},
{'Game_ID': 'no.1', 'Results': 0, 'Team': 'B'}]
代码抛出错误。
df.pivot_table(values="Results",index="Game_ID",
columns="Team",aggfunc=("count","mean","sum"),margins=True)
答案 0 :(得分:1)
我看到你正在谈论的错误。我通过使用函数调用而不是字符串名称" count"," mean"和" sum来解决它。"
首先,我们从您的数据框开始:
import pandas as pd
df=pd.DataFrame([{'Game_ID': 'no.1', 'Results': 0, 'Team': 'B'},
{'Game_ID': 'no.1', 'Results': 0, 'Team': 'A'},
{'Game_ID': 'no.1', 'Results': 0, 'Team': 'B'},
{'Game_ID': 'no.1', 'Results': 0, 'Team': 'B'},
{'Game_ID': 'no.1', 'Results': 1, 'Team': 'A'},
{'Game_ID': 'no.1', 'Results': 0, 'Team': 'A'},
{'Game_ID': 'no.1', 'Results': 0, 'Team': 'A'},
{'Game_ID': 'no.1', 'Results': 0, 'Team': 'B'},
{'Game_ID': 'no.1', 'Results': 0, 'Team': 'B'},
{'Game_ID': 'no.1', 'Results': 0, 'Team': 'B'},
{'Game_ID': 'no.1', 'Results': 1, 'Team': 'A'},
{'Game_ID': 'no.1', 'Results': 0, 'Team': 'A'},
{'Game_ID': 'no.1', 'Results': 1, 'Team': 'A'},
{'Game_ID': 'no.1', 'Results': 0, 'Team': 'B'}])
然后用标准库调用替换聚合函数len
和numpy聚合函数。
数据透视表由以下行组成:
import numpy as np
df.pivot_table(values="Results",
index="Game_ID",
columns="Team",
aggfunc=[len,np.mean,np.sum],
margins=True)
注意,len
可能不是您想要的,但在此示例中,它给出的答案与" count"相同。会独自一人。例如,请查看numpy.count_nonzero
。