Удаление дублирующихся значений из ячейки DataFramein python - PullRequest
0 голосов
/ 16 марта 2020

DataFrame

ID                                                                         Source
 1                     [192.168.1.121, 10.1.161.10, 192.168.1.121, 192.168.1.121]
 2          [192.168.1.121, 10.1.161.10, 10.1.161.10, 10.1.161.10, 192.168.1.121]
 3                                  [192.168.1.121, 192.168.1.121, 192.168.1.121]
 4                         [10.1.161.10, 192.168.1.121, 10.1.161.10, 10.1.161.10]

Вывод Я хочу

ID                                Source
 1            192.168.1.121, 10.1.161.10
 2            192.168.1.121, 10.1.161.10
 3                         192.168.1.121
 4            10.1.161.10, 192.168.1.121

Любая помощь будет оценена

Ответы [ 3 ]

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

Что вы хотите сделать, это удалить дубликаты в списке, который содержится внутри ячейки. Очень базовый c подход будет заключаться в итерации по столбцу и преобразовании каждого list в set и обратно в list.

df['Source'] = [list(set(eval(data))) for data in df['Source']]

Почему, по вашим словам, eval? Я оставлю это на ваше усмотрение.

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

Попробуйте использовать pd.unique:

df['source'] = df['source'].apply(
lambda x: ', '.join(pd.unique(x)),
)

Вывод:

ID                                Source
 1            192.168.1.121, 10.1.161.10
 2            192.168.1.121, 10.1.161.10
 3                         192.168.1.121
 4            10.1.161.10, 192.168.1.121
1 голос
/ 16 марта 2020

Вы можете использовать python для дедупликации списка

df['Source'] = df['Source'].apply(lambda x: ',' .join(set(x)))



    ID  Source
0   1   10.1.161.10,192.168.1.121
1   2   10.1.161.10,192.168.1.121
2   3   192.168.1.121
3   4   10.1.161.10,192.168.1.121
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...