如何展平FeatureTools Entity Set并获取基于关系的左连接宽表?
FeatureTools Entity Set 问题解答
1. 将Entity Set展平为宽输入格式
直接使用FeatureTools的dfs(深度特征合成)方法,通过禁用特征生成逻辑,仅利用其关系遍历能力生成宽表:
import featuretools as ft # 假设你的Entity Set实例为es,目标主实体名称为"main_entity" wide_df, _ = ft.dfs( entityset=es, target_entity="main_entity", # 指定作为宽表核心的实体 agg_primitives=[], # 禁用聚合类特征生成 trans_primitives=[], # 禁用转换类特征生成 drop_unique=False # 保留关联实体的所有字段,避免自动剔除唯一值字段 )
执行后得到的wide_df就是展平后的宽格式DataFrame,包含主实体及所有关联实体的字段,且通过预定义的关系完成匹配拼接。
2. 基于Entity Set关系生成左连接的合并DataFrame
借助dfs方法即可实现,该方法默认采用左连接逻辑,以目标实体为基准,按预定义关系关联所有层级的实体:
- 如果需要合并所有关联实体,只需将
max_depth设置为Entity Set的最大关系深度(或直接设为一个足够大的数值),确保遍历所有关联路径:
import featuretools as ft # 生成包含所有关联实体的左连接宽表 left_joined_df, _ = ft.dfs( entityset=es, target_entity="main_entity", agg_primitives=[], trans_primitives=[], drop_unique=False, max_depth=3 # 根据你的Entity Set关系层级调整 )
生成的left_joined_df等价于以主实体为左表,按关系链依次左连接所有关联实体后的结果,完全复用Entity Set中已定义的关系规则,无需手动编写Pandas合并逻辑。
内容的提问来源于stack exchange,提问作者surajzakaas
相关产品推荐
相关产品推荐

