如何在Pandas DataFrame中执行列值的条件更新?

时间:2018-09-17 15:44:12

标签: python python-3.x pandas dataframe

我有一个下面的数据框,有没有办法对熊猫中的列值进行条件加法。

  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
  • 如果城市!= pune,则取决于months_worked总工资 应该进行更新。例如,对于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 :(得分:0)

创建帮助系列后使用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 )