Как выполнить условное обновление значений столбцов в Pandas DataFrame? - PullRequest
0 голосов
/ 17 сентября 2018

У меня есть приведенный ниже фрейм данных, есть ли способ выполнить условное добавление значений столбцов в пандах.

  emp_id    emp_name    City    months_worked   default_sal total_sal   jan feb mar apr may jun
    111     aaa         pune       2                    90  NaN          4  5   5   54  3   2
    222     bbb         pune       1                    70  NaN          5  4   4   8   3   4
    333     ccc       mumbai       2                   NaN  NaN          9  3   4   8   4   3
    444     ddd          hyd       4                   NaN  NaN          3  8   6   4   2   7

Что я хочу достичь

  • если city = pune default_sal должен быть обновлен в total_sal для ex для emp_id 111 total_salary должно быть 90
  • если город! = Пуна, то в зависимости от месяца_работанная стоимость общая зарплата должно быть обновлено. Для ex для emp id 333 months_worked = 2 Итак, дополнение значения jan и feb должны быть обновлены как total_sal, что составляет 9 + 3 = 12

Желаемый O / P

emp_id  emp_name    City    months_worked   default_sal total_sal   jan feb mar apr may jun
    111     aaa     pune       2                  90    90           4  5   5   54  3   2
    222     bbb     pune       1                  70    70           5  4   4   8   3   4
    333     ccc     mumbai     2                  NaN   12           9  3   4   8   4   3
    444     ddd      hyd       4                  NaN   21           3  8   6   4   2   7

1 Ответ

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

Использование np.where после создания справочной серии

s1=pd.Series([df.iloc[x,6:y+6].sum() for x,y in enumerate(df.months_worked)],index=df.index)
np.where(df.City=='pune',df.default_sal,s1 )
Out[429]: array([90., 70., 12., 21.])

#df['total']=np.where(df.City=='pune',df.default_sal,s1 )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...