У меня есть набор данных с именем df_authors, и в этом наборе данных у меня есть столбец с именем автора. Я должен убедиться, что df_authors.author является уникальным идентификатором.
Что я пробовал, len(df_authors) == len(df_authors['author'].unique())
, и это возвращает True.
Мой вопрос в том, правильно ли я сделал это. Я нашел эту строку кода в Интернете и не уверен на 100%, делает ли она то, что я думаю.
Мое понимание уникального идентификатора заключается в том, что каждая строка в этом столбце имеет уникальные значения, и эта строка кода проверяет каждую строку в наборе данных на уникальность или нет.
Если бы кто-нибудь мог сказать мне, прав ли я или нет, я был бы очень признателен. Спасибо.
Вы правильно понимаете уникальный идентификатор, однако эта строка кода работает немного по-другому:
len(df_authors)
дает вам количество строк в DataFrame. len(df_authors['author'].unique())
дает вам количество уникальных значений в столбце author
. Если обе длины одинаковы, это обязательно означает, что author
уникален.
Вы также можете напрямую использовать панд, используя set_index
:
df_with_index = df_authors.set_index('author', verify_integrity=True)
Если индекс не уникален, это утверждение завершится ошибкой (из-за verify_integrity
), плюс вы сможете использовать автора в качестве индекса, например:
df_with_index.loc[author]
Круто, спасибо за разъяснение того, что я сделал. Таким образом, 'df_with_index = df_authors.set_index('author', verify_integrity=True)' вернет false или ошибку, если она не уникальна, и ничего не вернет, но перейдет к следующей строке, если она уникальна. Это правильно.
Да, именно - он вызовет исключение и прекратит выполнение (если вы не поймаете ошибку), но он продолжит работу, если данные в порядке.
Отлично спасибо. Все еще пытаюсь понять Data Mining. Спасибо за ваш ответ.
кажется достойным подходом, вы также можете использовать
df_authors['author'].duplicated().any()
и получитьFalse
, если нет дубликатов