Мне нужно посмотреть на все строки в столбце ['b'], а если строка непустая, перейдите в другой соответствующий столбец ['c'] и удалите дубликаты этого конкретного индекс против всех остальных строк в этом третьем столбце ['c'], сохраняя этот конкретный индекс. Я столкнулся с drop_duplicates, однако мне не удалось найти способ искать дубликаты выделенной строки, а не всех дубликатов в столбце. Я не могу использовать drop_duplicates во всем столбце, потому что я хочу сохранить дубликаты в этом столбце, которые могут соответствовать только пустым значениям в столбце ['b'].python pandas как выборочно удалять дубликаты
Возможны следующие сценарии: если в ['b'] вы найдете непустое значение, вы можете перейти к текущему индексу в ['c'] и найти все дубликаты этого ОДНОГО индекса и удалить их. Эти дубликаты могут соответствовать пустым ИЛИ непустым значениям в ['b']. Если в ['b'] вы обнаружите пустое значение, перейдите к следующему индексу. Таким образом, возможно, что пустые значения индексов в ['b'] удаляются косвенно, потому что они являются дубликатами индекса в ['c'], соответствующих непустому значению ['b'].
Отредактировано С Sample Data:
препроцессированные:
df1 = pd.DataFrame([['','CCCH'], ['CHC','CCCH'], ['CCHCC','CNHCC'], ['','CCCH'], ['CNHCC','CNOCH'], ['','NCH'], ['','NCH']], columns=['B', 'C'])
df1
B C
0 CCCH
1 CHC CCCH
2 CCHCC CNHCC
3 CCCH
4 CNHCC CNOCH
5 NCH
6 NCH
Постобработка и сбрасывают правильные дубликаты:
df2 = pd.DataFrame([['CHC','CCCH'], ['CCHCC','CNHCC'], ['CNHCC','CNOCH'], ['','NCH'], ['','NCH']], columns=['B', 'C'])
df2
B C
1 CHC CCCH
2 CCHCC CNHCC
4 CNHCC CNOCH
5 NCH
6 NCH
Выше мы видим результат, что только строки удалены были строки 0, 3, поскольку они являются дубликатами в столбце ['C'] строки 1, который имеет ненулевое значение «B». Строка 5,6 сохраняется, хотя они дублируются друг от друга в столбце ['C'], потому что они не имеют ненулевого значения «B». Строки 2 и 4 сохраняются, потому что они не дублируются в столбце ['C'].
Таким образом, логика должна проходить через каждую строку в столбце «B», если она пуста, а затем двигаться вниз по строке и продолжать. Если он не пуст, перейдите к соответствующему столбцу «C» и удалите любые дубликаты этой строки «C» ТОЛЬКО при сохранении этого индекса, а затем перейдите к следующей строке до тех пор, пока эта логика не будет применена ко всем значениям в столбце «B» ».
значение столбца B пусто -> Посмотрите на следующее значение в колонке B
| или если не пусто |
Колонка B не пусто -> Колонка C -> Отбросьте все дубликаты этого индекса столбца C, сохраняя при этом текущий индекс -> Посмотрите на следующее значение в колонке B
Можете ли вы предоставить некоторые образцы данных? (http://stackoverflow.com/help/mcve) – Thanos
И: [Как сделать хорошие воспроизводимые примеры панд] (http: // stackoverflow.com/questions/20109391/примеры использования-хороших-воспроизводимых-панд) – IanS
Отредактировано с помощью примера данных – lucas305