需要有关熊猫数据框条件的帮助。对于这个基本问题或是否已在其他地方覆盖了,我们表示歉意。
这是示例数据框:
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'])
这对吗?
答案 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)