Нахождение максимальной разницы для подмножества столбцов с пандами - PullRequest
0 голосов
/ 23 декабря 2018

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

   A   B    C   D   E
0  a  34   55  43  aa
1  b  53   77  65  bb
2  c  23  100  34  cc
3  d  54   43  23  dd
4  e  23   67  54  ee
5  f  43   98  23  ff

Мне нужно получить максимальную разницу между столбцами B, C и D и вернуть значение в столбце A.в строке «а» максимальная разница между столбцами составляет 55 - 34 = 21.данные находятся в кадре данных.

Ожидаемый результат -

    A   B    C   D   E
0  21  34   55  43  aa
1  24  53   77  65  bb
2  77  23  100  34  cc
3  31  54   43  23  dd
4  44  23   67  54  ee
5  75  43   98  23  ff

1 Ответ

0 голосов
/ 23 декабря 2018

Используйте np.ptp:

# df['A'] = np.ptp(df.loc[:, 'B':'D'], axis=1)
df['A'] = np.ptp(df[['B', 'C', 'D']], axis=1)
df

    A   B    C   D   E
0  21  34   55  43  aa
1  24  53   77  65  bb
2  77  23  100  34  cc
3  31  54   43  23  dd
4  44  23   67  54  ee
5  75  43   98  23  ff

Или найдите max и min самостоятельно:

df['A'] = df[['B', 'C', 'D']].max(1) - df[['B', 'C', 'D']].min(1)
df

    A   B    C   D   E
0  21  34   55  43  aa
1  24  53   77  65  bb
2  77  23  100  34  cc
3  31  54   43  23  dd
4  44  23   67  54  ee
5  75  43   98  23  ff

Если важна производительность, вы можете сделать это в пространстве NumPy:

v = df[['B', 'C', 'D']].values
df['A'] = v.max(1) - v.min(1)
df

    A   B    C   D   E
0  21  34   55  43  aa
1  24  53   77  65  bb
2  77  23  100  34  cc
3  31  54   43  23  dd
4  44  23   67  54  ee
5  75  43   98  23  ff
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...