Использование Panda's Apply для вычисления значения - KeyError - PullRequest
1 голос
/ 25 февраля 2020

У меня есть Panda DataFrame, который выглядит следующим образом:

country year    cases   population
0   Afghanistan '99 745 19987071
1   Brazil  '99 37737   172006362
2   China   '99 212258  1272915272
3   Afghanistan '00 2666    20595360
4   Brazil  '00 80488   174504898
5   China   '00 213766  1280428583

Я хочу добавить новый столбец под названием «Распространенность», который будет делить строки на население. Эта строка кода работает:

G['prevalence'] = G['cases'] / G['population']

Тем не менее, я хочу сделать то же самое, используя применить Panda. Вот что я пытаюсь сделать:

def get_prev (x, y):
    return x / y

def calc_prevalence(G):
    assert 'cases' in G.columns and 'population' in G.columns
    ###
    ### YOUR CODE HERE
    to_return = G.copy()
    new_column = to_return.apply(lambda x: get_prev(to_return.population, to_return.cases), axis=1)
    to_return['prevalence'] = new_column
    return to_return
    ###

#G_copy = G.copy()
H = calc_prevalence(G)

Я получаю KeyError: 'prevalence'

Есть идеи, что я делаю неправильно?

1 Ответ

2 голосов
/ 25 февраля 2020

Это можно сделать просто с помощью кода ниже

def func(x):
    res = x['cases']/x['population']
    return res
df['prevalence'] = df.apply(func, axis=1)

Выход

        country     year    cases   population  prevalence
0   Afghanistan     '99     745     19987071    0.000037
1   Brazil          '99     37737   172006362   0.000219
2   China           '99     212258  1272915272  0.000167
3   Afghanistan     '00     2666    20595360    0.000129
4   Brazil          '00     80488   174504898   0.000461
5   China           '00     213766  1280428583  0.000167
...