Применение нескольких пользовательских функций к групповым объектам и вывод на печать - PullRequest
0 голосов
/ 21 февраля 2020

Я написал набор пользовательских функций, предназначенных для печати вычислений, полученных из кадра данных, однако я хочу выполнить эту же цель, но для подмножеств кадра данных, определенных в столбце groupby. В идеале я бы перебирал каждый объект groupby, печатал ключ, передавал значения функциям и выводил результаты по одному.

Вот пример данных:

df.head()

    client  reg_goal    paid_regs   spend       
0   a       50.0        45.0        955.0   
1   b       700.0       550.0       1045.2  
2   c       130.0       135.0       630.0   
3   d       70.0        0.0         35.0    
4   e       1000.0      817.0       27240.0 

Вот желаемый пример вывода:

a 

client a acquired 45 regs, which is 90% of the reg goal. 

b

client a acquired 550 regs, which is 79% of the reg goal. 

и так далее ...

Вот пример пользовательская функция:

def reg_performance(data):
    paid_regs = data['paid_regs'].values
    paid_regs_sum = np.sum(paid_regs)
    reg_goal = data['reg_goal'].values
    reg_goal_sum = np.sum(reg_goal)
    reg_pct = round(100*(paid_regs_sum/reg_goal_sum), 2)
    reg_stats = paid_regs, paid_regs_sum, reg_goal, reg_goal_sum, reg_pct
    return reg_stats

Вот моя попытка выполнить итерации по групповым объектам и протестировать хотя бы одну пользовательскую функцию путем создания экземпляра функционального объекта при передаче субкадра в качестве параметра.

client_grouped = df.groupby('client')
groups = dict(list(client_grouped))

for k, v in groups.items(): 
    print(k)
    reg_performance = reg_performance(v)

Logi c заключается в том, что любая из этих пользовательских функций принимает кадр данных в качестве параметра, поэтому передача объектов итератора в виде подданных не должна быть проблемой, но я продолжаю нажимать TypeError: 'tuple' object is not callable ,

Кто-нибудь знает, как решить эту ошибку TypeError?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...