Panda: использование лямбда-функции для создания нового столбца путем добавления двух столбцов

#python #pandas #numpy

#python #pandas #numpy

Вопрос:

Я изучаю лямбда-функцию в Panda и пытаюсь поиграть с ней, но почему-то застрял на действительно простых приемах, я считаю, что я действительно близок.

Фрейм данных выглядит следующим образом

     A   B
0   1   2
1   2   3
2   3   4
  

Я пытаюсь получить следующий фрейм данных:

     A   B  C
0   1   2  3
1   2   3  5
2   3   4  8


newSumColumn = lambda x: x['A'] / x['B']
df['C'] = df.apply(newSumColumn)
  

Однако, когда я это делаю, я столкнулся с ('A', 'occurred at index Unnamed: 0')

Это кажется простой задачей, но на данный момент я бьюсь головой о стену

Ответ №1:

У вас есть одна опечатка, и вам нужно добавить axis=1

 # it is B not b
newSumColumn = lambda x: x['A'] / x['B']
#should add axis=1
df.apply(newSumColumn,axis = 1)
Out[1018]: 
0    0.500000
1    0.666667
2    0.750000
dtype: float64
  

Ответ №2:

По умолчанию функция применяется вдоль столбца. Чтобы применить вдоль строки, вы можете попробовать:

 newSumColumn = lambda x: x['A'] / x['b']
df['C'] = df.apply(newSumColumn, axis=1)