Функциональные каналы в Python как %> % от R magritrr

В R (благодаря magritrr) можно теперь выполнить операции с более функциональным синтаксисом передачи по каналу через %>%. Это означает что вместо того, чтобы кодировать это:

> as.Date("2014-01-01")
> as.character((sqrt(12)^2)

Вы могли также сделать это:

> "2014-01-01" %>% as.Date 
> 12 %>% sqrt %>% .^2 %>% as.character

Мне это более читаемо, и это расширяется на варианты использования вне кадра данных. Язык Python имеет поддержку чего-то подобного?

61
задан 11 June 2019 в 16:47

2 ответа

Существует dfply модуль. Можно найти больше информации по телефону

https://github.com/kieferk/dfply

, который Некоторые примеры:

from dfply import *
diamonds >> group_by('cut') >> row_slice(5)
diamonds >> distinct(X.color)
diamonds >> filter_by(X.cut == 'Ideal', X.color == 'E', X.table < 55, X.price < 500)
diamonds >> mutate(x_plus_y=X.x + X.y, y_div_z=(X.y / X.z)) >> select(columns_from('x')) >> head(3)
3
ответ дан 31 October 2019 в 15:27

Существует очень хорош pipe модуль здесь https://pypi.org/project/pipe / , Он перегружается | оператор, и обеспечьте много функций канала как add, first, where, tail и т.д.

>>> [1, 2, 3, 4] | where(lambda x: x % 2 == 0) | add
6

>>> sum([1, [2, 3], 4] | traverse)
10

Плюс, очень легко записать собственные функции канала

@Pipe
def p_sqrt(x):
    return sqrt(x)

@Pipe
def p_pr(x):
    print(x)

9 | p_sqrt | p_pr
0
ответ дан 31 October 2019 в 15:27

Другие вопросы по тегам:

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