сравнить несколько столбцов pandas dataframe с одним столбцом - PullRequest
0 голосов
/ 23 мая 2018

У меня есть фрейм данных: df-

    A   B   C   D   E
0   V   10  5   18  20
1   W   9   18  11  13
2   X   8   7   12  5
3   Y   7   9   7   8
4   Z   6   5   3   90

Я хочу добавить столбец 'Result', который должен возвращать 1, если значение в столбце 'E' больше, чем значения в столбцах B, C & Delse return 0.

Выходные данные должны быть:

    A   B   C   D   E   Result
0   V   10  5   18  20  1
1   W   9   18  11  13  0
2   X   8   7   12  5   0
3   Y   7   9   7   8   0
4   Z   6   5   3   90  1

Для нескольких столбцов я бы использовал логику вроде: if (и (E> B, E> C, E> D),1,0), но мне нужно сравнить около 20 столбцов (от B до U) с именем «V».Кроме того, фрейм данных имеет около 100 тыс. Строк.

Я использую

df['Result']=np.where((df.ix[:,1:20])<df['V']).all(1),1,0)

И это выдает ошибку памяти.

1 Ответ

0 голосов
/ 23 мая 2018

Одним из возможных решений является сравнение в numpy и последнее преобразование логической маски в int s:

df['Result'] = (df.iloc[:, 1:4].values < df[['E']].values).all(axis=1).astype(int)
print (df)
   A   B   C   D   E  Result
0  V  10   5  18  20       1
1  W   9  18  11  13       0
2  X   8   7  12   5       0
3  Y   7   9   7   8       0
4  Z   6   5   3  90       1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...