#python-3.x #pandas #dataframe #duplicates #data-analysis
#python-3.x #pandas #фрейм данных #дубликаты #анализ данных
Вопрос:
Мой набор данных выглядит примерно так
Я пытаюсь выполнить две функции для очистки df — сначала удалить все равные комбинации в df — это означает, что если одинаковые идентификаторы объединены вместе, как строка 1 и строка 3, это удаляет это, но затем, когда я пробую вторую функцию, которая затем удаляет все дубликаты в каждом столбце — она выполняется без ошибок, но фактические дубликаты не удаляются?
def remove_dup_combos(df):
u = df.filter(like='id').values
m = pd.DataFrame(np.sort(u, axis=1)).duplicated()
df = df[~m]
return df
def remove_dups(df):
df = df = df.drop_duplicates(['id1', 'id2'])
return df
Ответ №1:
Я считаю, что вам нужно, если нужно, удалить дубликаты по обоим столбцам:
df = df.drop_duplicates(['id1', 'id2'])
Ваше решение другое — удаляйте дубликаты отдельно, сначала просматривая первый, а затем второй столбец:
df = df.drop_duplicates(['id1'], inplace = False)
df = df.drop_duplicates(['id2'], inplace = False)
Параметр inplace = False
по умолчанию находится в DataFrame.drop_duplicates
, поэтому должен быть удален:
df = df.drop_duplicates(['id1'])
df = df.drop_duplicates(['id2'])
Комментарии:
1. Спасибо — можете ли вы взглянуть на мой отредактированный вопрос? этот ответ сработал, но, похоже, он не работает в сочетании, когда я сначала запускаю свою другую функцию, которая удаляет все комбинации, которые равны @jezrael
2. @Chris90 — Какой ожидаемый результат от ваших данных?
3. Например, в приведенном выше примере данных в моем вопросе — останется только последняя строка — я хочу удалить все строки, где идентификаторы представляют собой одну и ту же комбинацию, например строку 1 и строку 3 (где id1 и id2 — это одна и та же комбинация, только что переключенная для столбца, затем я также хочу удалить все дубликаты в col id1 и col id2 @jezrael
4. Я помечу этот пост как ответ, каким он был, и открою новый вопрос извините! @jerael