Featuretools 与非唯一连接键的关系
Featuretools relationship with non unique join key
假设我有两个 table,一个包含关于客户的元数据字段 customer_id
和一个事件 table 从网站点击流事件记录的字段 customer_id
, date
。显然,第二个 table 可能有几个非唯一事件(不幸的是,日期实际上只是一个日期而不是时间戳)。
尝试创建 https://docs.featuretools.com/loading_data/using_entitysets.html 时失败:
Index is not unique on dataframe (Entity transactions)
我怎样才能使其独一无二或发挥作用?
如果您的 table 没有可用作唯一索引的列,您可以让 featuretools 自动创建一个。调用 EntitySet.entity_from_dataframe(...)
时,只需向 index
参数提供数据框中当前不存在的列名并设置 make_index=True
。这将自动创建一个具有唯一值的列。
例如,在下面的代码中 event_id
索引是自动创建的
import pandas as pd
import featuretools as ft
df = pd.DataFrame({"customer_id": [0, 1, 0, 1, 1],
"date": [pd.Timestamp("1/1/2018"), pd.Timestamp("1/1/2018"),
pd.Timestamp("1/1/2018"), pd.Timestamp("1/2/2018"),
pd.Timestamp("1/2/2018")],
"event_type": ["view", "purchase", "view", "cancel", "purchase"]})
es = ft.EntitySet(id="customer_events")
es.entity_from_dataframe(entity_id="events",
dataframe=df,
index="event_id",
make_index=True,
time_index="date")
print(es["events"])
在事件实体中,您可以看到 event_id 现在是一个变量,即使它不在原始数据框中也是如此
Entity: events
Variables:
event_id (dtype: index)
date (dtype: datetime_time_index)
customer_id (dtype: numeric)
event_type (dtype: categorical)
Shape:
(Rows: 5, Columns: 4)
假设我有两个 table,一个包含关于客户的元数据字段 customer_id
和一个事件 table 从网站点击流事件记录的字段 customer_id
, date
。显然,第二个 table 可能有几个非唯一事件(不幸的是,日期实际上只是一个日期而不是时间戳)。
尝试创建 https://docs.featuretools.com/loading_data/using_entitysets.html 时失败:
Index is not unique on dataframe (Entity transactions)
我怎样才能使其独一无二或发挥作用?
如果您的 table 没有可用作唯一索引的列,您可以让 featuretools 自动创建一个。调用 EntitySet.entity_from_dataframe(...)
时,只需向 index
参数提供数据框中当前不存在的列名并设置 make_index=True
。这将自动创建一个具有唯一值的列。
例如,在下面的代码中 event_id
索引是自动创建的
import pandas as pd
import featuretools as ft
df = pd.DataFrame({"customer_id": [0, 1, 0, 1, 1],
"date": [pd.Timestamp("1/1/2018"), pd.Timestamp("1/1/2018"),
pd.Timestamp("1/1/2018"), pd.Timestamp("1/2/2018"),
pd.Timestamp("1/2/2018")],
"event_type": ["view", "purchase", "view", "cancel", "purchase"]})
es = ft.EntitySet(id="customer_events")
es.entity_from_dataframe(entity_id="events",
dataframe=df,
index="event_id",
make_index=True,
time_index="date")
print(es["events"])
在事件实体中,您可以看到 event_id 现在是一个变量,即使它不在原始数据框中也是如此
Entity: events
Variables:
event_id (dtype: index)
date (dtype: datetime_time_index)
customer_id (dtype: numeric)
event_type (dtype: categorical)
Shape:
(Rows: 5, Columns: 4)