Нужна помощь с условностями для фрейма данных pandas. Извините заранее за основной вопрос или если он будет рассмотрен в другом месте.
Здесь примерный кадр:
employee sales revenue salary
12345 20 10000 100000
У меня есть несколько условий, основанных на данных, которые приведут к изменению зарплаты.
сценарии: если продажи> 10 и доход> 5 000 долларов США, увеличьте зарплату на 20%, если продажи <5 и доход> 5 000 долларов США, в противном случае увеличьте зарплату на 10%, ничего не сделайте.
variables:
high_sales = 10
low_sales = 5
high_revenue = 5000
big_increase = 1.2
small_increase = 1.1
Я знаю, что это требует некоторого гнездования, но мне не ясно, как это сделать.
Я хочу, чтобы результат был файловым кадром с корректировкой только столбца зарплаты.
Здесь код:
df['salary'] = np.where((df['sales']>=high_sales & df['revenue']
>=high_revenue), df['salary'] * big_increase, (df['sales']<=low_sales &
df['revenue'] >=high_revenue), df['salary'] * small_increase, df['sales'])
Это правильно?
С несколькими условиями лучше использовать np.select
а не np.where
:
conds = [(df.sales > 10) & (df.revenue > 5000),
(df.sales < 5) & (df.revenue > 5000)]
choices = [df.salary * 1.2, df.salary * 1.1]
df['salary'] = np.select(conds, choices, default = df.revenue)
df['salary'] *= np.select(conds, [1.2, 1.1], 1)
.