Метод apply (): нормализует первый столбец суммой второго - PullRequest
0 голосов
/ 14 сентября 2018

Мне трудно понять, как работает функция:

""" the apply() method lets you apply an arbitrary function to the group 
result. The function take a DataFrame and returns a Pandas object (a df or 
series) or a scalar.
For example: normalize the first column by the sum of the second"""

def norm_by_data2(x):
    # x is a DataFrame of group values
    x['data1'] /= x['data2'].sum()
    return x
print (df); print (df.groupby('key').apply(norm_by_data2))

(Выдержка из: "Python Data Science Handbook", Джейк ВандерПлас, стр. 167)

Возвращает это:

key  data1  data2
0   A      0      5
1   B      1      0
2   C      2      3
3   A      3      3
4   B      4      7
5   C      5      9
key     data1  data2
0   A  0.000000      5
1   B  0.142857      0
2   C  0.166667      3
3   A  0.375000      3
4   B  0.571429      7
5   C  0.416667      9

Для меня лучший способ понять, как это работает, - вручную вычислить значения.

Может кто-нибудь объяснить, как вручную добраться до второго значения столбца 'data1': 0.142857

Это 1/7? но откуда эти значения?

Спасибо!

1 Ответ

0 голосов
/ 14 сентября 2018

Я понял !!

Сумма столбца B для каждой группы:

A: 5 + 3 =  8
B: 0 + 7 =  7
C: 3 + 9 = 12

Например, чтобы достичь 0,142857, разделите 1 на сумму группы B (это 7): 1/7 =0.142857

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