Извлечение элементов, посещенных на сегодняшний день, из таблицы данных отдельных посещений. - PullRequest
0 голосов
/ 09 марта 2020

У меня есть большой pandas фрейм данных, где каждая строка соответствует посещению с отметкой даты. Мне нужен новый фрейм данных с датами и набором посещенных на сегодняшний день элементов.

# original df
visit_records = [['01-01-2020', 'c'], ['01-02-2020', 'b'], ['01-02-2020', 'c'], ['01-04-2020', 'a'], ['01-05-2020', 'd']]
df = pd.DataFrame(visit_records, columns=["date", "location"])
df['date'] = pd.to_datetime(df['date'])


        date location
0 2020-01-01        c
1 2020-01-02        b
2 2020-01-02        c
3 2020-01-04        a
4 2020-01-05        d

желаемый результат (порядок не имеет значения в списках элементов):

        date visited_to_date
0 2020-01-01                      [c]
1 2020-01-02                   [c, b]
2 2020-01-04                [c, b, a]
3 2020-01-05             [c, b, a, d]

Я пытался this , но он возвращает элементы, посещенные за каждую дату, а не все, которые были посещены на сегодняшний день.

1 Ответ

1 голос
/ 09 марта 2020

Это может быть не лучшим, но apply и cumsum подойдут:

df['visited_to_date'] = (df.location
   .drop_duplicates()               # only look at unique values
   .apply(lambda x: [x])            # change each value into a list
   .cumsum()                        # list cumsum
)
df[df['visited_to_date'].notnull()]

Вывод:

        date location visited_to_date
0 2020-01-01        c             [c]
1 2020-01-02        b          [c, b]
3 2020-01-04        a       [c, b, a]
4 2020-01-05        d    [c, b, a, d]
...