我有这个样本:
import pandas as pd
import numpy as np
dic = {'name':
['j','c','q','j','c','q','j','c','q'],
'foo or bar':['foo','bar','bar','bar','foo','foo','bar','foo','foo'],
'amount':[10,20,30, 20,30,40, 200,300,400]}
x = pd.DataFrame(dic)
x
pd.pivot_table(x,
values='amount',
index='name',
columns='foo or bar',
aggfunc=[np.mean, np.sum])
它返回以下内容:
我只想显示突出显示的列。为什么我不能像这样在aggfunc参数中指定元组?
pd.pivot_table(x,
values='amount',
index='name',
columns='foo or bar',
aggfunc=[(np.mean, 'bar'), (np.sum, 'foo')])
唯一的选择是.ix
像这里使用(为pandas数据透视表中的每个值列定义aggfunc)吗?
我认为您不能为aggfunc
参数指定元组,但是您可以执行以下操作:
In [259]: p = pd.pivot_table(x,
.....: values='amount',
.....: index='name',
.....: columns='foo or bar',
.....: aggfunc=[np.mean, np.sum])
In [260]: p
Out[260]:
mean sum
foo or bar bar foo bar foo
name
c 20 165 20 330
j 110 10 220 10
q 30 220 30 440
In [261]: p.columns = ['{0[0]}_{0[1]}'.format(col) if col[1] else col[0] for col in p.columns.tolist()]
In [262]: p.columns
Out[262]: Index(['mean_bar', 'mean_foo', 'sum_bar', 'sum_foo'], dtype='object')
In [264]: p[['mean_bar','sum_foo']]
Out[264]:
mean_bar sum_foo
name
c 20 330
j 110 10
q 30 440
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句