【发布时间】:2017-08-11 10:05:19
【问题描述】:
我正在尝试运行以下函数
def make_europe_view(data):
data['% Rev'] = data.GrossRevenue_GBP/data.GrossRevenue_GBP.sum()
tmean = lambda x :stats.trim_mean(x, 0.1)
pivot = pd.pivot_table(data[(data['New_category_ID'] != 0)&(data['YYYY'] == 2016)],
index = 'New_category',
values=['GrossRevenue_GBP','MOVC_GBP','PM_GBP', '% Rev'],
aggfunc= {'MOVC_GBP':tmean,'PM_GBP':tmean,'GrossRevenue_GBP':[np.sum,tmean],'% Rev':np.sum })
pivot['% PM'] = pivot['PM_GBP']/pivot[('GrossRevenue_GBP')]['<lambda>']
#pivot['% MOVC'] = pivot['MOVC_GBP']/Tmean_GR
pivot['Country'] = 'EU'
pivot['product_cat'] = pivot.index
#pivot = pivot[['product_cat', '% Rev', 'GrossRevenue_GBP', 'MOVC_GBP', 'PM_GBP', '% PM', '% MOVC', 'Country']]
return pivot
我想通过截断的平均值和总和来汇总总收入,生成数据透视表没有问题,但是在创建一些额外的列时遇到了问题。具体这部分代码:
pivot['% PM'] = pivot['PM_GBP']/pivot[('GrossRevenue_GBP')]['<lambda>']
我正在尝试创建一个列,通过将“PM_GBP”列的截断平均值作为“GrossRevenue_GBP”列的截断平均值的百分比来计算 PM 的截断平均值百分比
它会产生以下错误:
ValueError: Wrong number of items passed 25, placement implies 1
非常感谢您对此的帮助。
当我运行 list() 时,pivot 的列名:
[('GrossRevenue_GBP', '<lambda>'), ('GrossRevenue_GBP', 'sum'), ('% Rev', 'sum'), ('MOVC_GBP', '<lambda>'), ('PM_GBP', '<lambda>'), ('Country', ''), ('product_cat', '')]
【问题讨论】:
-
pd.pivot_table(...)之后的样本数据 (pivot) 是什么? -
@jezrael - 我已经在上面添加了,当写入到 excel 文件中以进行枢轴输出时输出
-
(数字已被清理)
-
对不起,我有时间回答了。请检查一下。
标签: python pandas pivot pivot-table subset