Agg功能的Pandas Pivot表字典
我试图在旋转期间计算3个aggregative
函数:
这是代码:
n_page = (pd.pivot_table(Main_DF,
values='SPC_RAW_VALUE',
index=['ALIAS', 'SPC_PRODUCT', 'LABLE', 'RAW_PARAMETER_NAME'],
columns=['LOT_VIRTUAL_LINE'],
aggfunc={'N': 'count', 'Mean': np.mean, 'Sigma': np.std})
.reset_index()
)
我得到的错误是:KeyError: 'Mean'
如何计算这3个函数?
答案 0 :(得分:14)
正如@ Happy001在批准的回答中所写,aggfunc
不能dict
为假。我们实际上可以将dict
传递给aggfunc
。
一个非常方便的功能是能够将dictionary
传递给aggfunc
,以便您可以对所选的每个值执行不同的功能。
例如:
import pandas as pd
import numpy as np
df = pd.read_excel('sales-funnel.xlsx') #loading xlsx file
table = pd.pivot_table(df, index=['Manager', 'Status'], columns=['Product'], values=['Quantity','Price'],
aggfunc={'Quantity':len,'Price':[np.sum, np.mean]},fill_value=0)
table
在上面的代码中,我将dictionary
传递给aggfunc
并对len
和Quantity
,mean
操作执行sum
操作在Price
。
这是输出附件:
答案 1 :(得分:7)
aggfunc
的{{1}}参数采用函数或函数列表,但不是pivot_table
aggfunc:function,默认numpy.mean或函数列表 如果传递的函数列表,生成的数据透视表将具有分层列,其顶层是函数名称(从函数对象本身推断)
所以试试
dict
您可能希望以后重命名分层列。
答案 2 :(得分:2)
尝试使用groupby
df = (Main_DF
.groupby(['ALIAS', 'SPC_PRODUCT', 'LABLE', 'RAW_PARAMETER_NAME'], as_index=False)
.LOT_VIRTUAL_LINE
.agg({'N': 'count', 'Mean': np.mean, 'Sigma': np.std})
)
设置as_index=False
只会将这些作为列留在数据框中,这样您就不必在之后重置索引。