pandas.Series.nunique.__name__ changes after running dfs

Author: LivSkovhusCreated Jul 12, 2024Updated Jul 12, 2024

featuretools.dfs() changes pandas.Series.nunique.__name__ when executing an aggregation primitive containing num_unique.

Example:

python
from pandas import DataFrame, Series
import featuretools as ft 
from woodwork.logical_types import Categorical

df = DataFrame({"index": [1,2,3,4,5], 
                "A": ["cat", "dog", "cat", "horse", "monkey"], 
                "Group": ["X", "X", "Y", "Y", "Y"]})

es = ft.EntitySet(id="test")
es = es.add_dataframe(dataframe_name="df", index="index", dataframe=df, logical_types={"A": Categorical})
es = es.normalize_dataframe(base_dataframe_name="df", new_dataframe_name="group", index="Group")

assert Series.nunique.__name__ == "nunique"

feature_matrix, feature_defs = ft.dfs(
    entityset=es, 
    target_dataframe_name="group", 
    agg_primitives=['num_unique'], 
    trans_primitives=[]
)

assert Series.nunique.__name__ != "nunique"