Создание нового столбца и заполнение логических значений в - Python - PullRequest
0 голосов
/ 11 ноября 2019

У меня есть набор данных, который выглядит следующим образом:

A 	B	C	 Location 
10	15	15	South 
11	12	42	North
20	13	36	South 
15	30	40	West
10	40	20	East
15	20	10	South 
45	45	23	North 
12	12	12	West 
2	0	1	East 

Я хочу создать новый столбец, который печатает True или false на основе условия, если A и B и C <= 16. </p>

Я пыталсяделать:

for rows in df.rows:

df['Purity'] = np.where((A <= 16 and B<=16 and C<=16), 'True', 'False')

Но это не заполняет каждую ячейку строки как отдельное значение, а заполняет первое значение во всех ячейках столбца.

Я хотел бы иметьрезультат как:

A 	B	C   Location  Purity 
10	15	15	South 	TRUE
11	12	42	North	FALSE
20	13	36	South 	FALSE
15	30	40	West	FALSE
10	40	20	East	FALSE
15	20	10	South 	FALSE
45	45	23	North 	FALSE
12	12	12	West 	TRUE
2	0	1	East 	TRUE

Спасибо

1 Ответ

1 голос
/ 11 ноября 2019

Используйте & для побитового И с парантезами, если необходимо, установите новые значения строк по условиям:

df['Purity'] = np.where((df.A <= 16) & (df.B<=16) & (df.C<=16), 'TRUE', 'FALSE')

Если хотите установить логические значения True и False, установите связанные маски:

df['Purity'] = (df.A <= 16) & (df.B<=16) & (df.C<=16)

Что аналогично:

df['Purity'] = np.where((df.A <= 16) & (df.B<=16) & (df.C<=16), True, False)

Другая идея - сравнить все столбцы вместе и использовать DataFrame.all, если все True с в строках:

df['Purity'] = (df[['A','B','C']] <= 16).all(axis=1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...