在pandas数据透视表中,是否可以使用percentage或quantile作为aggfunc?我已经尝试了numpy. percentage和pandas quantile,但都没有成功。
uqxowvwt1#
虚拟数据:
In [135]: df = pd.DataFrame([['a',2,3], ['a',5,6], ['a',7,8], ['b',9,10], ['b',11,12], ['b',13,14]], columns=list('abc'))
np.percentile似乎工作得刚刚好?
np.percentile
In [140]: df.pivot_table(columns='a', aggfunc=lambda x: np.percentile(x, 50)) Out[140]: a a b b 5 11 c 6 12
w8f9ii692#
The lambda function solutions works, but produces column names of "<lambda_0>" , etc. which need to be renamed later.除了使用lambda(即未命名函数),我们还可以定义自己的函数,它们应该对一系列值进行操作。
df = pd.DataFrame([['a',2,3], ['a',5,6], ['a',7,8], ['b',9,10], ['b',11,12], ['b',13,14]], columns=list('abc'))
def quantile_25(growth_vals:pd.Series): return growth_vals.quantile(.25) def quantile_75(growth_vals:pd.Series): return growth_vals.quantile(.75) df.pivot_table(columns='a', aggfunc=[quantile_25, np.median, quantile_75])
生成的列名将与函数名相对应。
2条答案
按热度按时间uqxowvwt1#
虚拟数据:
np.percentile
似乎工作得刚刚好?w8f9ii692#
The lambda function solutions works, but produces column names of "<lambda_0>" , etc. which need to be renamed later.
除了使用lambda(即未命名函数),我们还可以定义自己的函数,它们应该对一系列值进行操作。
生成的列名将与函数名相对应。