有条件的w / Pandas数据框

时间:2018-09-23 17:24:12

标签: python pandas dataframe if-statement conditional

需要有关熊猫数据框条件的帮助。对于这个基本问题或是否已在其他地方覆盖了,我们表示歉意。

这是示例数据框:

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'])

这对吗?

1 个答案:

答案 0 :(得分:1)

在多种情况下,最好使用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)