Допустим, у меня есть фрейм данных, в котором записан покупатель (обозначенный буквой) и дата, когда он прибыл в магазин.
customer date
A 2010-01-01
B 2010-01-01
A 2010-01-02
C 2010-01-02
D 2010-01-03
D 2010-01-03
Я хочу подсчитать количество уникальных клиентов, которые приходят в магазин и отображать кумулятивное количество уникальных клиентов каждый день. Поэтому я не хочу дважды подсчитывать клиентов, которые уже были в магазине в прошлом.
Желаемый результат будет примерно таким:
date cumulative unique customers to date
2010-01-01 2 # A, B
2010-01-02 3 # A, B, C
2010-01-03 4 # A, B, C, D
Итак, через 3 дня, у нас есть 4 разных клиента, которые прибыли
До сих пор я подошел ближе всего к использованию функции groupby()
:
df.groupby('Date')['Customer'].nunique()
, которая дает мне
date unique customers per date
2010-01-01 2 # A, B
2010-01-02 2 # A, C
2010-01-03 1 # D
Однако это просто количество уникальных клиентов в день .
Я думаю, мне нужно создать новый столбец и функцию, которая проходит через каждую строку и помещает 1 в новый столбец, если это первое посещение клиента в этой строке, в противном случае - 0. Затем примените метод cumsum () к этому новому столбцу (для каждого дня), чтобы получить желаемый результат.
У меня проблемы с кодом, который принимает значение в столбце «клиент» и сравнивает его. к каждому другому значению в столбце, чтобы определить, является ли оно первым в своем роде - или это вообще необходимо?