Почему метод применения Pandas не имеет опции axis = None, чтобы применить функцию ко всему фрейму данных? - PullRequest
0 голосов
/ 26 апреля 2018

Кажется, в API панд (IMHO / YMMV) есть пробел в том, что нет способа объединить операции (в свободном стиле), которые работают на всем фрейме данных.

например. a.op1.op2.op3...

Метод apply принимает функцию и аргумент оси и соответственно применяет функцию к строкам или столбцам. То, что я думаю, отсутствует, это ось = Нет, что будет означать, что функция применяется ко всему фрейму данных. Это тогда позволило бы операциям, включая структурные модификации (например, удаление строк, столбцов, переименование, изменения индекса и т. Д.), Быть объединенными в такой свободный стиль.

Для этого есть хак.

Если a является фреймом данных, то ...

a.groupby(lambda _:0).apply(lambda x:...

... означает, что x в примененной лямбда-выражении последовательно устанавливается для каждой группы группы, но создается только одна группа, поэтому функция, примененная к этой группе, фактически становится функцией, применяемой ко всему кадру данных. Однако это немного неуклюже и имеет недостаток в том, что иногда groupby создает новый уровень в индексе (но иногда это нет, и это трудно предсказать).

Я пропустил метод в API или есть менее хитрый способ добиться этого?

1 Ответ

0 голосов
/ 09 мая 2018

Похоже, в конце концов я был методом "канала", который берет функцию и применяет ее непосредственно к DataFrame (или Series, GroupBy).

pandas.DataFrame.pipe

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...