Отношения Featuretools с неуникальным ключом соединения - PullRequest
0 голосов
/ 23 сентября 2018

Предполагается, что у меня есть две таблицы, одна с метаданными о клиенте с полем customer_id и таблица событий, записанная из событий потока посещений веб-сайта с полями customer_id, date.Очевидно, что во второй таблице может быть несколько неуникальных событий (к сожалению, дата на самом деле является только датой, а не отметкой времени).

При попытке создать https://docs.featuretools.com/loading_data/using_entitysets.html происходит сбой с:

Index is not unique on dataframe (Entity transactions)

Как я могу сделать его уникальным или заставить его работать?

1 Ответ

0 голосов
/ 23 сентября 2018

Если в вашей таблице нет столбца, который можно использовать в качестве уникального индекса, вы можете автоматически создать его.При вызове 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)
...