I want to create complex features like [(a-b)/c or (a-b)/a] This can be achieved by running feature tools multiple times so that first one creates features like a-b or a+b or a/b and then next run would create more complex features. As I try to do this using the following code samples: import featuretools as ft def multi_level_feature_creation(X, trans_primitives_per_level): feature_matrix = X for i,trans_primitives in enumerate(trans_primitives_per_level): print("Level: ", i) print("Columns: ", feature_matrix.columns) es = ft.EntitySet(id = 'dataset') dataframe_name = "data" + str(i) es = es.add_dataframe( dataframe_name=dataframe_name, dataframe=feature_matrix, index="index" + str(i) ) feature_matrix, feature_defs = ft.dfs(entityset = es, target_dataframe_name = dataframe_name, trans_primitives = trans_primitives) return feature_matrix, feature_defs X = df.drop(["target"], axis=1) y = df["target"] features_per_level = [ ['add_numeric', 'multiply_numeric', 'subtract_numeric', 'divide_numeric', 'multiply_numeric_scalar'], ['add_numeric', 'multiply_numeric', 'subtract_numeric', 'divide_numeric', 'multiply_numeric_scalar'], # ['add_numeric', 'multiply_numeric', 'subtract_numeric', 'divide_numeric', 'multiply_numeric_scalar'] ] feature_matrix, feature_defs = multi_level_feature_creation(X, features_per_level) print(type(feature_matrix)) feature_matrix.head() When I run it with single level it works fine. The issue occurs when running on more than one levels: ValueError: Cannot add a Woodwork DataFrame to EntitySet without a name How to handle that? Continue reading...