Проверьте наличие дубликатов панд способом PEP8 - PullRequest
0 голосов
/ 06 июня 2018

Самый простой способ проверить наличие дубликатов в кадре данных pandas - это:

if (df["col1"].value_counts() > 1).sum() > 0:
    raise ValueError("dupes in column 'col1'!")

Проблема в том, что это не соответствует PEP8.Проверка кода в моей IDE (я использую PyCharm) говорит мне:

Неразрешенная ссылка на атрибут 'sum' для класса 'bool'

Что является приемлемым способомпроверить наличие дубликатов панд без добавления нескольких строк кода?

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

Ваша ошибка не имеет ничего общего с PEP8.На самом деле, ваша ошибка кажется ложноположительной: ваша IDE выглядит как с предположением , что результатом операции сравнения является логическое значение и, следовательно, нет метода sum или any.

Но в вашем синтаксисе нет ничего плохого: df["col1"].value_counts() > 1 возвращает логический объект pd.Series, который имеет методы sum и any.

Единственное решение, которое я могу предложить, - это использовать другую IDE,Или отключите проверку кода.

0 голосов
/ 06 июня 2018

Это не имеет ничего общего с PEP8-совместимостью, но вы, вероятно, ищете:

if (df.col1.value_counts() > 1).any():
    raise ValueError("dupes in column 'col1'!")

Обратите внимание, что при этом игнорируются значения None / NaN / NaT, т.е. выне найдет дубликаты na, использующие этот метод.Если вам это нужно, добавьте dropna=False к вызову value_counts.

Однако обратите внимание, что это не самый быстрый подход.Более быстрый тест будет, например:

if len(set(df.col1.values)) != len(df.col1):
    ...
...