Как удалить дубликаты строк с одинаковыми значениями в разном порядке в фрейме данных от pandas - PullRequest
0 голосов
/ 27 августа 2018

Как убрать дубликаты в дф?У df есть только 1 столбец.В этом случае «60,25» и «25,60» представляют собой пару дублированных строк.На выходе должен быть новый df.Для каждой пары дублирующихся строк сохраненная строка в формате «A, B», где A B.В этом случае "25,60" и "80,123" должны быть сохранены.Для уникального ряда он должен оставаться таким, какой он есть.

enter image description here

Ответы [ 2 ]

0 голосов
/ 27 августа 2018

Я бы сделал комбинацию вещей.

  1. Используйте pandas.Series.str.split, чтобы разделить запятыми
  2. Используйте apply(frozenset), чтобы получить такой набор, который я могу использовать duplicated
  3. Использование pandas.Series.duplicated с keep='last'

df[~df.A.str.split(',').apply(frozenset).duplicated(keep='last')]

        A
1  123,17
3  80,123
4   25,60
5   25,42

Адресация комментариев

df.A.apply(
    lambda x: tuple(sorted(map(int, x.split(','))))
).drop_duplicates().apply(
    lambda x: ','.join(map(str, x))
)

0     25,60
1    17,123
2    80,123
5     25,42
Name: A, dtype: object

Настройка

df = pd.DataFrame(dict(
    A='60,25 123,17 123,80 80,123 25,60 25,42'.split()
))
0 голосов
/ 27 августа 2018

IIUC, используя get_dummies с duplicated

df[~df.A.str.get_dummies(sep=',').duplicated()]
Out[956]: 
       A
0    A,C
1    A,B
4  X,Y,Z

Ввод данных

df
Out[957]: 
       A
0    A,C
1    A,B
2    C,A
3    B,A
4  X,Y,Z
5  Z,Y,X

Обновление op полностью меняет вопрос на другой вопрос

newdf=df.A.str.get_dummies(sep=',')
newdf[~newdf.duplicated()].dot(newdf.columns+',').str[:-1]
Out[976]: 
0     25,60
1    123,37
dtype: object
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...