pandas — сравнить N столбцов и вывести максимум (равные столбцы)

#python #pandas

#python #pandas

Вопрос:

Хорошо — не совсем pandas-foo мой путь через это.

У меня есть N (скажем, 4 для этой цели) источников данных об одних и тех же данных, и я хочу знать максимальное количество источников данных, которые имеют одинаковое значение для каждой строки, а также это значение.

Таким образом, пример ввода будет:

 source_1 source_2 source_3 source_4
100      100      98       100
 

и я хочу добавить два столбца в свой фрейм данных, max_sources = 3 и max_value = 100 .

Я могу сделать это с помощью старой доброй хэш-карты, но полагаю, что должен быть способ сделать это с помощью pandas — equals и compare это 1: 1, но правильная общая идея.

Ответ №1:

Попробуйте:

 # identify your sources
source_cols = ['source1', 'source2', 'source3', 'source4']

max_vals = df[source_cols].max(1)

df['max_sources'] = df[source_cols].eq(max_vals, axis=0).sum(1)
df['max_value'] = max_vals