#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