Я пытаюсь скопировать, dplyr пакет из R, используя Python/Pandas (в качестве учебного упражнения). То, что я застрял, это функциональность "трубопроводов".
В R/dplyr это выполняется с использованием оператора-оператора %>%, где x %>% f(y) эквивалентно f(x, y). Если возможно, я хотел бы воспроизвести это с помощью синтаксиса infix (см. здесь).
Чтобы проиллюстрировать, рассмотрим две функции ниже.
import pandas as pd
def select(df, *args):
    cols = [x for x in args]
    df = df[cols]
    return df
def rename(df, **kwargs):
    for name, value in kwargs.items():
        df = df.rename(columns={'%s' % name: '%s' % value})
    return df
Первая функция принимает фрейм данных и возвращает только данные столбцы. Второй принимает блок данных и переименовывает данные столбцы. Например:
d = {'one' : [1., 2., 3., 4., 4.],
     'two' : [4., 3., 2., 1., 3.]}
df = pd.DataFrame(d)
# Keep only the 'one' column.
df = select(df, 'one')
# Rename the 'one' column to 'new_one'.
df = rename(df, one = 'new_one')
Для достижения такого же синтаксиса pipe/infix код будет выглядеть следующим образом:
df = df | select('one') \
        | rename(one = 'new_one')
Таким образом, выход из левой части | передается в качестве первого аргумента функции справа. Всякий раз, когда я вижу что-то подобное (здесь), он включает функции лямбда-функции. Возможно ли передать трубку Pandas 'между функциями таким же образом?
Я знаю, что Pandas имеет метод .pipe, но для меня важным является синтаксис примера, который я предоставил. Любая помощь будет оценена по достоинству.
