Я не уверен в механике, но это работает. Обратите внимание, что возвращаемое значение - это просто ndarray. Я думаю, что вы можете применить любую кумулятивную или «скользящую» функцию таким образом, и она должна иметь тот же результат.
Я протестировал ее с помощью cumprod
, cummax
и cummin
, и все они вернулись ndarray. Я думаю, что панды достаточно умны, чтобы знать, что эти функции возвращают серию, и поэтому функция применяется как преобразование, а не агрегация.
In [35]: df.groupby('id')['x'].cumsum()
Out[35]:
0 0
1 1
2 3
3 3
4 7
5 12
Редактирование: мне было любопытно, что этот синтаксис возвращает Серия:
In [54]: df.groupby('id')['x'].transform('cumsum')
Out[54]:
0 0
1 1
2 3
3 3
4 7
5 12
Name: x
Указатель функции также указывает в память, единственная разница - то, что существует исполняемый код в той ячейке памяти вместо данных.
На многих платформах, при попытке выполнить данные (например, регулярная память) Вы разрушите или вызовете исключение. Это известно как Предотвращение Выполнения Данных - меры безопасности для предотвращения приложений, непреднамеренно выполняющих изворотливый код, который может быть помещен туда вредоносным программным обеспечением.
Это - указатель кода. Это указывает на адрес функции. Это по существу, как Вы описали. И да, если у Вас будут указатели, которые не указывают на то, что Вы ожидаете, то у Вас будут проблемы.
Хорошо я не уверен, но полагая, что функции являются инструкциями (ADD, SUB, JMP) и что у каждого из них есть шестнадцатеричные значения, я полагаю, что Вы не изменили бы функцию, но только инструкцию JMP ()...
Указатели функции указывают на адрес функции в памяти.
На основе пути указатели функции обычно присваиваются, я был бы удивлен, были ли у Вас они указывающий на местоположение данных. Они обычно не бросаются и поэтому вряд ли указать где угодно кроме на допустимую функцию. Если Вы бросаете их много, то это могло быть проблемой. Более вероятно, хотя то, что данные, Вы являетесь передающими к функции, являются неправильными.