труба
Одна функция, которую вы можете использовать: pd.DataFrame.pipe
.Это считается «удручающим», потому что это облегчает цепочку операторов.
По моему мнению, вы должны отделить чтение данных в фрейм данных от манипулирования фреймом данных.Например:
class A:
def main(self):
df = self.load_file_into_df()
df = df.pipe(self.add_x_columns)\
.pipe(self.calculate_y)\
.pipe(self.calculate_consequence)
return df
compose
Композиция функций не является родной для Python, но сторонняя библиотека toolz
предлагает эту функцию.Это позволяет вам лениво определять цепочечные функции.Обратите внимание на обратный порядок операций, то есть последний аргумент compose
выполняется первым.
from toolz import compose
class A:
def main(self)
df = self.load_file_into_df()
transformer = compose(self.calculate_consequence,
self.calculate_y,
self.add_x_columns)
df = df.pipe(transformer)
return df
На мой взгляд, compose
предлагает гибкое и адаптируемое решение.Например, вы можете определить любое количество композиций и применять их выборочно или повторно в различных точках вашего рабочего процесса.