np.где несколько условий?

#python #numpy

#python #numpy

Вопрос:

Я использую numpy для добавления в новый столбец, удаленный из другого столбца. Я считаю, что разрешено только 2 аргумента, но мне нужно 3. Возможно ли это с помощью оператора elif?

Мне нужно, чтобы S3 был «виртуальной машиной», CloudWatch был «диском», а все остальное было «Другим»

Что у меня есть:

 data_1 = pd.read_csv('data.csv')

data_1['ADDED_COLUMN1'] = np.where(data_1.DIMENSION.isin(['S3', 'Glacier']), 
'VM', 'Other')
 

Вывод:

 S3             VM
Glacier        VM
S3             VM
S3             VM
CloudWatch     VM
Athena       Other
 

Чего я хочу:

 S3             VM
Glacier        VM
S3             VM
S3             VM
CloudWatch     Disk
Athena         Other
 

Как мне добавить еще 1 аргумент, чтобы получить этот результат?

Ответ №1:

Вы можете использовать numpy.select здесь

 conditions  = [ data_1.DIMENSION.isin(["s3","Glacier"]), data_1.DIMENSION == "CloudWatch" ]
choices = ["VM", "Disk"]

data_1["ADDED_COLUMN1"] = np.select(conditions, choices, default="Other")

data_1
    DIMENSION ADDED_COLUMN1
0          s3            VM
1     Glacier            VM
2          s3            VM
3          s3            VM
4  CloudWatch          Disk
5      Athena         Other

 

Ответ №2:

Вы можете использовать этот синтаксис:

 np.where((condition 1) amp; (condition 2))