假设我有一个数据框,其列为: 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中相对较新。谢谢!