Python Aggfunc的数据透视表列表
Agg函数的透视表字典 我试图在旋转过程中计算3个聚合函数:Python Aggfunc的数据透视表列表,python,pandas,pivot-table,Python,Pandas,Pivot Table,Agg函数的透视表字典 我试图在旋转过程中计算3个聚合函数: 计数 卑鄙 科技发展署 代码如下: n_page = (pd.pivot_table(Main_DF, values='SPC_RAW_VALUE', index=['ALIAS', 'SPC_PRODUCT', 'LABLE', 'RAW_PARAMETER_NAME'], c
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个函数?尝试使用
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设置为
只会将它们作为列保留在数据帧中,这样以后就不必重置索引。pivot\u table
的aggfunc
参数接受函数或函数列表,而不是dict
aggfunc:函数、默认numpy.mean或函数列表
如果传递了函数列表,则生成的透视表将具有分层列,其顶层是函数名(从函数对象本身推断)
所以试试看
n_page = (pd.pivot_table(Main_DF,
values='SPC_RAW_VALUE',
index=['ALIAS', 'SPC_PRODUCT', 'LABLE', 'RAW_PARAMETER_NAME'],
columns=['LOT_VIRTUAL_LINE'],
aggfunc=[len, np.mean, np.std])
.reset_index()
)
您可能需要在以后重命名层次结构列。如@Happy001在approved Response中所述,
aggfunc
cant-takedict
为false。我们实际上可以将dict
传递给aggfunc
一个非常方便的功能是能够将字典
传递给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
在上面的代码中,我将字典
传递给aggfunc
,并对数量
和平均
,价格
执行len
操作
以下是输出:
示例取自我正在计算统计数据“SPC\u原始值”在您的代码中消失了您可以发布一些示例数据吗
Main_DF.head()。to_dict('list')
对不起,不能。这是我的爱,来点化妆吧!你能告诉我如何重新命名层次结构列吗,比如说“len”到“n”Great one@ganesh。但是我注意到一个值只能映射到一次aggfunc。如果尝试将相同的值映射到其他aggfunc,则只有第一个映射有效。你遇到过这种情况吗?