Не используйте метод drop в ваших data пайплайнах. Из-за drop неясно, какие колонки остаются в получившемся датасете.
Читая код, не понимаешь, какие поля обязательные. Особенно сложно, если в коде большая вложенность. def fun1(df: pd.DataFrame) -> pd.DataFrame: # some code return df.drop("price", axis=1)
def fun2(df: pd.DataFrame) -> pd.DataFrame: # some code df = fun1(df) return df.drop("total_sum", axis=1)
df = pd.read_csv"path) def fun3(df: pd.DataFrame) -> pd.DataFrame: df = fun2(df) # some code return df.drop("cluster_id", axis=1)
Вот сиди и думай, какой список полей на выходе из fun3. Сначала нужно понять, что находится в датафрейме, который читается. Потом разобраться, какие колонки дропаются на выходе каждой из функций. Еще неясно, какие колонки добавляются. Придется искать их по всему коду.
Если же каждый раз явно указывать список полей, то все становится понятно: def fun3(df: pd.DataFrame) -> pd.DataFrame: df = fun2(df) # some code return df[["product_id", "store_id", "sales", "volume"]]