gpt4 book ai didi

python - Pandas hub_table 多个 aggfunc 带边距

转载 作者:太空宇宙 更新时间:2023-11-03 14:51:05 24 4
gpt4 key购买 nike

我注意到,当有多个 aggfunc 例如(“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 聚合函数即可。

  • “count”变为 len
  • “mean”变为 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)

Output pivot table

请注意,len 可能不是您想要的,但在本示例中,它给出的答案与“count”本身给出的答案相同。例如,看看 numpy.count_nonzero

关于python - Pandas hub_table 多个 aggfunc 带边距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45895816/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com