数据框分组汇总以实现百分位数

时间:2018-11-10 20:54:51

标签: python pandas aggregate pandas-groupby

假设我有一个数据框,其列为: JobTitle,年龄,统计信息和日期。目标是将其按JobTitle和Age分组,并将Aggregation函数应用于Stats和Date。 Stats列将从配置文件中读取。如果为空,则默认值为“平均值”,否则将采用用户定义的百分位数。

这就是我所做的:

import pandas as pd
import numpy as np
aggregate_dict={'Stats':'Mean', 'Date':'min'}

for i in range(0,df.shape[0]):
    if df.Stats[i]:
         temp_StatsName = df.Stats[i]
         aggregate_dict={'Stats':'percentile('+temp_StatsName+')', 'Date':'min'}


df_final=df.groupby(['JobTitle','Age']).agg(aggregate_dict).reset_index()

除此之外,我还尝试过像这样创建自己的百分位函数,并将其用于aggregate_dict定义,但未成功:

def percentile(n):
    def percentile_(x):
        return np.percentile(x, n)
    percentile_.__name__ = 'percentile_%s' % n
    return percentile_

如果您可能对“统计”列不为空时如何实施用户定义的百分位数有任何建议,那将非常有帮助。我的代码可能并不理想,因为我在Python中相对较新。谢谢!

0 个答案:

没有答案