Как выполнить условное добавление столбцов в Pandas DataFrame? - PullRequest
0 голосов
/ 08 сентября 2018

У меня ниже набора данных. И я хочу добавить зарплату каждого emp в зависимости от месяца emp_worked. Для ex, как показано ниже, набор данных emp с именем 'aaa' работал в течение 4 месяцев. Поэтому я хочу добавить столбцы jan к Apr и сохранить их в Total_ sal. колонка.

`import pandas as pd`

    data=pd.read_csv("C:\\Users\\hp\\Desktop\\py\\p1.txt",delimiter=',')
    df=pd.DataFrame(data)
    print(df)



  emp_id emp_name  months_worked  total_sal   jan  feb      mar  apr  may  \
0       1      aaa              4        NaN  2000    1      2.0    3  4.0   
1       2      bbb              3        NaN     1    2      NaN    4  5.0   
2       3      bbb              7        NaN     1    2  34343.0    4  NaN   
3       4      bbb             12        NaN     1    2  33434.0    4  5.0   

      jun  jul      aug   sep   oct      nov   dec  
0  5555.0  NaN  74343.0     8     9     10.0   NaN  
1   643.0  7.0      NaN  9343    10  13431.0  12.0  
2  6343.0  7.0      NaN     9  1043     11.0  12.0  
3     NaN  7.0      8.0     9     1      NaN  12.0 

Ответы [ 2 ]

0 голосов
/ 08 сентября 2018
# Get the index where jan starts
months_index_start = df.columns.get_loc("jan")
# Calculate the total salary for each row according to the months_worked column
df["total_sal"] = df.apply(lambda x : x[months_index_start : months_index_start + x["months_worked"]].sum(), axis = 1)
0 голосов
/ 08 сентября 2018
df['Total_sal'] = df[df.columns[df.columns.get_loc('jan'):df.columns.get_loc('apr')]].sum(axis=1)

из

    emp_id  emp_name    months_worked   total_sal   jan feb mar apr may jun jul aug sep oct nov dec Total_sal
1   aaa 4   NaN 2000    1   2.0 3   4.0 5555.0  NaN 74343.0 8   9   10.0    NaN 12.0    6.0
2   bbb 3   NaN 1   2   NaN 4   5.0 643.0   7.0 NaN 9343    10  13431.0 12.0    NaN 6.0
3   bbb 7   NaN 1   2   34343.0 4   NaN 6343.0  7.0 NaN 9   1043    11.0    12.0    NaN 34349.0
4   bbb 12  NaN 1   2   33434.0 4   5.0 NaN 7.0 8.0 9   1   NaN 12.0    NaN 33440.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...