Как мне посмотреть на объект в отладчике XCode?

Вы можете сделать это, используя группу:

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
30
задан Jim Puls 10 June 2009 в 23:04
поделиться

4 ответа

po 0x1081ad0

po = Печать объекта. Вы даже можете вызывать такие методы, как

po [myArray objectAtIndex: 0]

Обратите внимание, что он работает только с объектами, поэтому

po 1

приведет к сбою вашей программы.

42
ответ дан 27 November 2019 в 23:48
поделиться

Есть несколько вещей, которые вы можете сделать.

  1. Вы можете вставить точку останова, которая будет срабатывать каждый раз при возникновении исключения, поэтому в основном создайте для этого точку останова (перейдите к точки останова и создайте новую): - [NSException raise]
  2. В качестве альтернативы вы можете увидеть, что это за объект в этом месте памяти:

    информационный символ 0x1081ad0 или

    информационная строка * 0x1081ad0

Там еще информация в вики-записи cocoadev для обработки исключений и советы по отладке для цели C в cocoawithlove .

6
ответ дан 27 November 2019 в 23:48
поделиться

Ваш экземпляр недействителен. Вы освободили объект где-то еще, но вы не очистили указатель ... включите обнаружение зомби.

0
ответ дан 27 November 2019 в 23:48
поделиться

Стивен прав - команда gdb po является ярлыком для print-object , который на самом деле вызывает -debugDescription (а не -description , как и следовало ожидать) на объекте, предоставленном в качестве аргумента. Во многих случаях вы увидите один и тот же результат от обоих методов, поскольку один вызывает другой, если он не отменен. (См. Соответствующее Примечание: выноска в техническом примечании Apple для получения подробной информации. Обратите внимание, что в их примере кода po $ r3 печатает содержимое регистра PowerPC, но вы можете использовать любой указатель / ссылку на объект, включая регистры Intel и т. д.)

Также имейте в виду, что print-object будет работать только с действительными объектами, которые не были освобождены. Это совершенно не поможет, если вы отправляете сообщение на заблокированный указатель. Однако, учитывая указанную вами ошибку, может показаться, что это действительный экземпляр объекта, он просто не реализует метод, который вы пытаетесь вызвать.

Также удаленно возможно, что объект уже был уничтожен. Этот ответ должен помочь в этом случае.


Изменить:

Есть и другие способы «исследовать» объекты в отладчике. Я задал этот вопрос SO о средствах форматирования данных Xcode, что является одним из способов определения того, как настраиваемый класс отображается в столбце «Сводка» отладчика. Документация, связанная с этим вопросом, объясняет, как это работает. Я обнаружил, что сводный подход очень помогает видеть состояние объекта.

s также отдаленно возможно, что объект уже был уничтожен. Этот ответ должен помочь в этом случае.


Изменить:

Есть и другие способы «исследовать» объекты в отладчике. Я задал этот вопрос SO о средствах форматирования данных Xcode, что является одним из способов определения того, как настраиваемый класс отображается в столбце «Сводка» отладчика. Документация, связанная с этим вопросом, объясняет, как это работает. Я обнаружил, что сводный подход очень помогает видеть состояние объекта.

s также отдаленно возможно, что объект уже был уничтожен. Этот ответ должен помочь в этом случае.


Изменить:

Есть и другие способы «исследовать» объекты в отладчике. Я задал этот вопрос SO о средствах форматирования данных Xcode, что является одним из способов определения того, как настраиваемый класс отображается в столбце «Сводка» отладчика. Документация, связанная с этим вопросом, объясняет, как это работает. Я обнаружил, что сводный подход очень помогает видеть состояние объекта.

Это один из способов определить, как настраиваемый класс отображается в столбце «Сводка» отладчика. Документация, связанная с этим вопросом, объясняет, как это работает. Я обнаружил, что сводный подход очень помогает видеть состояние объекта.

Это один из способов определить, как настраиваемый класс отображается в столбце «Сводка» отладчика. Документация, связанная с этим вопросом, объясняет, как это работает. Я обнаружил, что сводный подход очень помогает видеть состояние объекта.

9
ответ дан 27 November 2019 в 23:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: