2013-04-29 5 views
2

Предположим, что мы имеем GroupBy объект, который был получен в результате groupby операции применяется к DataFrame:Как применить функцию к нескольким столбцам объекта GroupBy?

grouped = data_frame.groupy(['col_1', 'col_2']) 

Мы можем генерировать новый кадр данных, если мы указываем, как значения в объекте GroupBy должны быть чтобы получить одиночные значения. Например:

grouped.agg('col_3':sum, 'col_4':min, 'col_5':user_defined_function) 

В приведенном выше примере мы использовали функции, которые принимают списки (или, точнее, серии) в качестве входных данных и возвращают единственное значение в качестве выходного сигнала. Это приятно, но мне нужно использовать две серии в качестве входных данных. Например, я хочу принимать значения от col_3 и col_4 и использовать их для генерации одиночных значений.

Например, я хотел бы узнать, какая максимальная абсолютная разница между соответствующими значениями в col_3 и col_4.

Есть ли способ сделать это в пандах?

ответ

3

Если вы не указали функцию на столбец, все столбцы будут переданы функции (для обоих применений и для agg). Таким образом:

data_frame.groupy(['col_1', 'col_2']).apply(lambda x: np.max(np.abs(x['col_3'] - x['col_4']))) 

Это дает абсолютную максимальную разницу между col_3 и col_4 для каждой группы.

Смежные вопросы