我注意到,当具有多个(例如“” count“,” mean“,” sum“)的聚集函数时,无法设置margins = True。
它将呕吐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)
最佳答案
我看到您在说的错误。我通过使用函数调用而不是字符串名称“ 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聚集函数即可。“计数”变为len
“平均值”变为np.mean
“ sum”变为np.sum
数据透视表由以下几行组成:
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
。