Вы можете сделать это, используя группу:
c_maxes = df.groupby(['A', 'B']).C.transform(max)
df = df.loc[df.C == c_maxes]
c_maxes
является Series
максимальных значений C
в каждой группе, но имеет одинаковую длину и с тот же индекс, что и df
. Если вы не использовали .transform
, то печать c_maxes
может быть хорошей идеей, чтобы увидеть, как это работает.
Другой подход, использующий drop_duplicates
, будет
df.sort('C').drop_duplicates(subset=['A', 'B'], take_last=True)
Не уверен, что более эффективно, но я предполагаю, что первый подход, поскольку он не включает сортировку.
EDIT: от pandas 0.18
до второго решения будет df.sort_values('C').drop_duplicates(subset=['A', 'B'], keep='last')
или, альтернативно, df.sort_values('C', ascending=False).drop_duplicates(subset=['A', 'B'])
. В любом случае решение groupby
кажется значительно более эффективным:
%timeit -n 10 df.loc[df.groupby(['A', 'B']).C.max == df.C]
10 loops, best of 3: 25.7 ms per loop
%timeit -n 10 df.sort_values('C').drop_duplicates(subset=['A', 'B'], keep='last')
10 loops, best of 3: 101 ms per loop
po 0x1081ad0
po = Печать объекта. Вы даже можете вызывать такие методы, как
po [myArray objectAtIndex: 0]
Обратите внимание, что он работает только с объектами, поэтому
po 1
приведет к сбою вашей программы.
Есть несколько вещей, которые вы можете сделать.
В качестве альтернативы вы можете увидеть, что это за объект в этом месте памяти:
информационный символ 0x1081ad0 или
информационная строка * 0x1081ad0
Там еще информация в вики-записи cocoadev для обработки исключений и советы по отладке для цели C в cocoawithlove .
Ваш экземпляр недействителен. Вы освободили объект где-то еще, но вы не очистили указатель ... включите обнаружение зомби.
Стивен прав - команда gdb po
является ярлыком для print-object
, который на самом деле вызывает -debugDescription
(а не -description
, как и следовало ожидать) на объекте, предоставленном в качестве аргумента. Во многих случаях вы увидите один и тот же результат от обоих методов, поскольку один вызывает другой, если он не отменен. (См. Соответствующее Примечание: выноска в техническом примечании Apple для получения подробной информации. Обратите внимание, что в их примере кода po $ r3
печатает содержимое регистра PowerPC, но вы можете использовать любой указатель / ссылку на объект, включая регистры Intel и т. д.)
Также имейте в виду, что print-object
будет работать только с действительными объектами, которые не были освобождены. Это совершенно не поможет, если вы отправляете сообщение на заблокированный указатель. Однако, учитывая указанную вами ошибку, может показаться, что это действительный экземпляр объекта, он просто не реализует метод, который вы пытаетесь вызвать.
Также удаленно возможно, что объект уже был уничтожен. Этот ответ должен помочь в этом случае.
Изменить:
Есть и другие способы «исследовать» объекты в отладчике. Я задал этот вопрос SO о средствах форматирования данных Xcode, что является одним из способов определения того, как настраиваемый класс отображается в столбце «Сводка» отладчика. Документация, связанная с этим вопросом, объясняет, как это работает. Я обнаружил, что сводный подход очень помогает видеть состояние объекта.
s также отдаленно возможно, что объект уже был уничтожен. Этот ответ должен помочь в этом случае.Изменить:
Есть и другие способы «исследовать» объекты в отладчике. Я задал этот вопрос SO о средствах форматирования данных Xcode, что является одним из способов определения того, как настраиваемый класс отображается в столбце «Сводка» отладчика. Документация, связанная с этим вопросом, объясняет, как это работает. Я обнаружил, что сводный подход очень помогает видеть состояние объекта.
s также отдаленно возможно, что объект уже был уничтожен. Этот ответ должен помочь в этом случае.Изменить:
Есть и другие способы «исследовать» объекты в отладчике. Я задал этот вопрос SO о средствах форматирования данных Xcode, что является одним из способов определения того, как настраиваемый класс отображается в столбце «Сводка» отладчика. Документация, связанная с этим вопросом, объясняет, как это работает. Я обнаружил, что сводный подход очень помогает видеть состояние объекта.
Это один из способов определить, как настраиваемый класс отображается в столбце «Сводка» отладчика. Документация, связанная с этим вопросом, объясняет, как это работает. Я обнаружил, что сводный подход очень помогает видеть состояние объекта. Это один из способов определить, как настраиваемый класс отображается в столбце «Сводка» отладчика. Документация, связанная с этим вопросом, объясняет, как это работает. Я обнаружил, что сводный подход очень помогает видеть состояние объекта.