Предположим, у меня есть кадр данных со столбцами:
JobTitle, возраст, статистика и дата. Цель состоит в том, чтобы сгруппировать его по JobTitle и Age и применить функции агрегирования к 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_
Если у вас может появиться предложение о том, как реализовать пользовательский процентиль , когда столбец Stats не пуст, это было бы очень полезно. Мой код может быть не идеальным, я относительно новый в Python. Спасибо!