创建新列并计算 python 行中列的值

Create new column and calculate values to the column in python row wise

我需要根据可结算列创建一个新列作为结算和非结算。如果 Billable 是 'Yes' 那么我应该创建一个新列作为 Billing,如果它的 'No' 那么需要创建一个新列作为 'Non-Billable' 并且需要计算它。计算应在行轴上。

数据

Employee Name  |    Java  |  Python| .Net  |  React |  Billable|                                  
----------------------------------------------------------------                                                 
|Priya         |    10    |        |   5   |        |  Yes     |                                                  
|Krithi        |          |   10   |   20  |        |   No     |                                                   
|Surthi        |          |   5    |       |        |  yes     |                                                
|Meena         |          |   20   |       |    10  |   No     |                                                 
|Manju         |    20    |  10    |  10   |        |  Yes     |       
                                     

输出

我试过使用插入语句,但我无法继续插入它。我也尝试追加,但它不起作用。

Bill_amt = []
Non_Bill_amt = []

for i in df['Billable']:
    if i == "Yes" or i == None:
        Bill_amt = (df[Bill_amt].sum(axis=1)/168 * 100).round(2)
        df.insert (len( df.columns ), column='Billable Amount', value=Bill_amt )#inserting the column and it name
        #CANNOT INSERT ROW AFTER IT AND CANNOT APPEND IT TOO
    else:
        Non_Bill_amt = (DF[Non_Bill_amt].sum ( axis=1 ) / 168 * 100).round ( 2 )
        df.insert ( len ( df.columns ), column='Non Billable Amount', value=Non_Bill_amt ) #inserting the column and its name
        #CANNOT INSERT ROW AFTER IT.

使用 .sum(axis=1) 然后 np.where() 将值放入相应的列中。例如:

x = df.loc[:, "Java":"React"].sum(axis=1) / 168 * 100

df["Bill"] = np.where(df["Billable"].str.lower() == "yes", x, "")
df["Non_Bill"] = np.where(df["Billable"].str.lower() == "no", x, "")

print(df)

打印:

  Employee_Name  Java  Python  .Net  React Billable                Bill            Non_Bill
0         Priya  10.0     NaN   5.0    NaN      Yes   8.928571428571429                    
1        Krithi   NaN    10.0  20.0    NaN       No                      17.857142857142858
2        Surthi   NaN     5.0   NaN    NaN      yes   2.976190476190476                    
3         Meena   NaN    20.0   NaN   10.0       No                      17.857142857142858
4         Manju  20.0    10.0  10.0    NaN      Yes  23.809523809523807