2017-08-09 271 views
0

我试图用聚合函数被截断的熊猫创建一个数据透视表示需要每个数据结束的10%。在Python中使用stats.trim_mean ass aggfunc Pandas Pivot

pivot = pd.pivot_table(data[(data['New_category_ID'] > 0)&(data['YYYY'] == 2016)], index = 'New_category', values=['GrossRevenue_GBP','MOVC_GBP','PM_GBP'],aggfunc=stats.trim_mean(0.1)) 

我得到这个以下错误:

TypeError: trim_mean() missing 1 required positional argument: 'proportiontocut'

stats.trim_mean()有两个参数一个是数据,另一个是数据的百分比从数据的每一端删除。在这种情况下,我指定了10%。

如何解决需要指定列/数据框它应该采取修剪的意思给定我试图创建数据透视表?

会很感激一些帮助

+0

'aggfunc =拉姆达X:stats.trim_mean(X,0.1)' – ayhan

+0

@ayhan - 谢谢你这么多。它运行完美,但是当我使用Excel进行验证时,似乎来自Excel的修剪意义与Python提供的不同。现在需要决定哪一个是正确的...如果你将它作为答案,我会批准它 –

+0

这可能是他们如何计算百分比(有几种方法)造成的差异。 – ayhan

回答

1

可以使用lambda函数:

pivot = pd.pivot_table(data[(data['New_category_ID'] > 0) & (data['YYYY']==2016)], 
         index='New_category', 
         values=['GrossRevenue_GBP', 'MOVC_GBP', 'PM_GBP'], 
         aggfunc=lambda x: stats.trim_mean(x, 0.1))