Заменить значение в зависимости от условий в других столбцах

#pandas #dataframe #duplicates

#панды #фрейм данных #дубликаты

Вопрос:

Я хотел бы изменить значение (c, d), где есть повторяющееся имя (a) И условие = ‘Отмена’ (b)

введите описание изображения здесь

 import pandas as pd

data1 = {'a' : ['Mary','Mary','John','Jenny','Jenny'],
         'b' : ['Approve','Cancel','Approve','Approve','Cancel'],
         'c' : [100,200,300,400,500],
         'd' : [200,200,300,400,500]
        }

df1= pd.DataFrame(data1)
df1
 

Я могу выбрать конкретные строки, используя df1[(df1.duplicated(['a'], keep=False) amp; (df1['b']=='Cancel'))] , но изо всех сил пытаюсь найти способ изменить значения….Я занимаюсь исследованиями np.where и df.apply

Заранее благодарю.

Ответ №1:

Используйте 'loc' с именами столбцов, которые вы хотите изменить:

 df1.loc[(df1.duplicated(['a'], keep=False) amp; (df1['b']=='Cancel')),
        ['c','d']] = 0
 

Вывод:

        a        b    c    d
0   Mary  Approve  100  200
1   Mary   Cancel    0    0
2   John  Approve  300  300
3  Jenny  Approve  400  400
4  Jenny   Cancel    0    0