Как найти дубликаты в таблице - PullRequest
1 голос
/ 03 марта 2020

Мне нужно создать новый столбец, который сообщает, является ли клиент новым или повторяющимся.

Для этого я хочу проверить, для каждого уникального значения в телефоне, есть ли одна или несколько дат, связанных с столбцы Дата.

 Phone   Date
0    a   1
1    a   1
2    a   2
3    b   2
4    b   2
5    c   3
6    c   2
7    c   1

Новые пользователи - это те, для кого существует только одна уникальная пара (Телефон, Дата) с одним и тем же телефоном. Результат, который я хочу, выглядит следующим образом:

Phone   Date    User_type
0   a   1   recurrent
1   a   1   recurrent
2   a   2   recurrent
3   b   2   new
4   b   2   new
5   c   3   recurrent
6   c   2   recurrent
7   c   1   recurrent

Мне удается сделать это в нескольких строках кода с помощью python, но мой начальник хочет настаивать, чтобы я делал это в Таблице.

I знаю, что мне нужно использовать вычисляемое поле, но это все.

Если это может помочь, вот мой код python, который делает то же самое:

import numpy as np
import pandas as pd

for item in set(data.Phone):
    if len(set(data[data.Phone == item]['Date'])) == 1:
        data.loc[data.Phone == item, 'type_user'] = 'new'
    elif len(set(data[tata.Phone == item]['Date'])) > 1:
        data.loc[data.Phone == item, 'type_user'] = 'recurrent'
    else:
        data.loc[data.Phone == item, 'type_user'] = np.nan

Ответы [ 2 ]

0 голосов
/ 04 марта 2020

Спасибо за ответ! Это не совсем решило мою проблему, но определенно помогло мне найти решение.

Решение:

Я впервые получил для данного телефона номер отдельной даты

{Fixed [Phone] : COUNT([Date])}

Затем я создал свою категориальную (размерную) переменную

if {Fixed [Phone] : COUNT([Date])} > 1 THEN 'recurrent' ELSE 'new' END

Результат (номера телефонов скрыты по причинам конфиденциальности данных):

введите описание изображения здесь

0 голосов
/ 04 марта 2020

Вы можете использовать LOD для этого, ниже будет указано, сколько записей дублируется

{Fixed [Phone],[Date]: SUM([Number of Records])}

Если вы хотите текст, выполните:

IF {Fixed [Phone],[Date]: SUM([Number of Records])} > 1 THEN 'recurrent' ELSE 'new' END

Пример:

enter image description here

...