Как убрать дубли в списке с групповым в Python? - PullRequest
1 голос
/ 09 мая 2019

У меня есть большой файл данных, в котором мне нужно удалить дупс по ряду. Я использовал groupby для группировки по идентификатору, а затем добавил значения по 12 столбцам в список. Последний шаг, который мне нужен, это удалить дубликаты значений в списке.

Я знаю, что set () удалит дубликаты из традиционного списка, но я не уверен, сработает ли это в моей группе или есть лучший способ.

import pandas as pd

df = pd.read_csv("Test.csv")

grouped = df.groupby('<ID>')['fb1','fb2','fb3'].apply(lambda 
x: x.values.tolist())

В настоящее время вы можете увидеть дуп «Включает в себя ручку»

us_7493577 [[Неразрушаемая батарея. Возможна доставка по воздуху ...

us_7493578 [[Неразрушаемая батарея. Возможна доставка по воздуху ...

us_7493586 [[Включает ручку, включает ручку, нан.]]

Результат, который я ищу

us_7493577 [[Неразрушаемая батарея. Возможна доставка по воздуху ...

us_7493578 [[Неразрушаемая батарея. Возможна доставка по воздуху ...

us_7493586 [[Включает ручку, нан.]]

1 Ответ

1 голос
/ 09 мая 2019

Я считаю, что вам нужно set с в лямбда-функции и установить понимание:

f = lambda x: set([z for y in x.values for z in y])
grouped = df.groupby('<ID>')['fb1','fb2','fb3'].apply(f)

Если необходимо также удалить пропущенные значения, отфильтруйте их, сравнив z == z, потому что np.nan != np.nan - docs :

f = lambda x: set([z for y in x.values for z in y if z == z])
grouped = df.groupby('<ID>')['fb1','fb2','fb3'].apply(f)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...