Случай, который вы запрашиваете (независимо от того, какой столбец, какой или что означает «дублированные данные»), нуждается в цикле, потому что нарезка имеет свой собственный путь, она не должна быть итеративной функцией. То, что вы указываете в своем вопросе , зависит от данных, найденных в какой-то момент («следующая строка») . Таким образом, нарезку следует использовать, как только вы обнаружите, где эти данные дублируются (если это действительно так).
dataframe.str.match()
функция возвращает полный ряд, который сообщает вам, происходит ли совпадение для каждогои каждая строка в кадре данных. Функция sum
возвращает общее количество совпадений, добавляя приведенные логические значения к значению int в ряду. Если есть более одного совпадения (текущая строка + один), и только тогда, вы можете срезать df с этого момента. Первый ряд не может быть повторен (это первый и не нуждается в проверке).
Конкретное местонахождение того, что вы пытаетесь достичь, вы можете определить из этого примера.
import pandas as pd
for idx,row in df[1:].iterrows():
if df.col_2.str.match(df.loc[idx].col_2).sum() > 1:
print("found at", idx)
df = df[:idx]
break
Имейте в виду, что это просто пример из коробки, break
никогда не следует использовать, вы должны использовать elif и явно определять поведение вашего кода.