我正在用这是Kaggle的数据写笔记本。下面是两个表的屏幕截图,以显示我们在这两个表中都有ID列。

下面是我在尝试设置实体集并添加关系时的代码。
import featuretools as ft
import pandas as pd
es = ft.EntitySet()
es = es.add_dataframe(dataframe=train_sampled, index='new_index', dataframe_name='application', make_index=True)
es = es.add_dataframe(dataframe=bureau, index='new_index', dataframe_name='bureau', make_index=True)
new_relationship = ft.Relationship(entityset=es,parent_dataframe_name='application',parent_column_name='SK_ID_CURR',
child_dataframe_name='bureau',child_column_name='SK_ID_CURR')
es = es.add_relationship(new_relationship)这是我所犯的错误,这是毫无意义的。
KeyError:'DataFrame application.SK_ID_CURR>在实体集中不存在‘
Entityset存在,但不能添加关系,这就是其中的要点。

任何建议或指导都是非常感谢的。
编辑:解决方案--这段代码使用下面的答案加上将bureau表中的索引列更改为唯一的索引列。
es = ft.EntitySet()
es = es.add_dataframe(dataframe=train_sampled, index='SK_ID_CURR', dataframe_name='application', make_index=False)
es = es.add_dataframe(dataframe=bureau, index='SK_ID_BUREAU', dataframe_name='bureau', make_index=False)
new_relationship = ft.Relationship(entityset=es,parent_dataframe_name='application',parent_column_name='SK_ID_CURR',
child_dataframe_name='bureau',child_column_name='SK_ID_CURR')
es = es.add_relationship(relationship=new_relationship)发布于 2022-02-04 13:41:47
如果要通过传入一个EntitySet对象向Relationship添加关系,则需要确保在调用中使用relationship关键字,如下所示:
es.add_relationship(relationship=new_relationship)在不使用relationship关键字的情况下,该方法期望传入四个值,指示parent_dataframe_name、parent_column_name、child_dataframe_name、child_column_name。使用这种方法,您可以跳过创建Relationship对象并添加如下关系:
es.add_relationship('application', 'SK_ID_CURR', 'bureau', 'SK_ID_CURR')最后,还可以使用EntitySet.add_relationships方法添加关系,通过传入一个Relationship对象列表,可以向EntitySet添加一个或多个关系:
es.add_relationships([new_relationship])有关所有这些方法和预期参数的更多详细信息,您始终可以参考Featuretools参考
https://stackoverflow.com/questions/70986231
复制相似问题