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

У меня есть фрейм данных df

import pandas
df = pandas.DataFrame(data=[[1,True],[2,False]],columns=['A','decide'])

, к каким строкам я хочу применить функцию fun в зависимости от значения столбца выбора

def fun(case,var):
   case = case + var
   return case


df=df.apply(lambda x: fun(x,1) if x['decide'] else fun(x,2))

, конечно, не 'т работаю :) есть идеи почему и как заставить это работать?

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

Попробуйте исправить свой код, PS: вы забыли добавить axis=1

df.apply(lambda x: fun(x['A'],1) if x['decide'] else fun(x['A'],2),axis=1)
Out[560]: 
0    2
1    4
dtype: int64

Также при использовании np.where вы все равно можете передавать свои собственные определенные функции

np.where(df.decide,fun(df.A,1),fun(df.A,2))

Если ваша логика так же проста, как вы показываете нам в своей функции примера

df.A+2-df.decide
Out[563]: 
0    2
1    4
dtype: int64
0 голосов
/ 21 февраля 2019

IIUC вы можете использовать np.where:

df['A'] = np.where(df.decide, df.A+1, df.A+2)

   A  decide
0  2    True
1  4   False
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...