Я пытаюсь добавить в свой фрейм данных столбец, который вычисляет Delta. На основе имени в столбце «Имя», если это имя есть в списке, вычисляется df ['A'] - df ['B'], если имя отсутствует в списке, вычисляется df [' B '] - df [' A '].
Вот что у меня есть:
for i in list1:
df['Delta'] = np.where(df['Name'] == i, np.maximum(0, df['A'] - df['B']), np.maximum(0, df['B'] - df['A']))
Проблема в том, что он проходит через каждый i отдельно и перезаписывает все i, которые были ранее .
Как я могу переписать этот код, чтобы он не go проходил через каждый i, а вместо этого просто проверял, равно ли df ['Name'] любому из i?
Что-то вроде:
df['Delta'] = np.where(df['Name'] == any(list1), np.maximum(0, df['A'] - df['B']), np.maximum(0, df['B'] - df['A']))
Если есть лучший способ сделать это, дайте мне знать.