У меня есть следующий кадр данных, как показано ниже
ID TYPE POLICY_NUMBER DISB_AMT
738 20 FLDINC MSH39990 1
738 21 MSH39990 3848
750 20 INF395737 1
750 21 INF395737 FLDINCL 2350
892 20 SJK389743 3904
892 21 MSH284989 1
Я пытаюсь сгруппировать по идентификатору и извлечь номер политики и выполнить поиск в другом ТИПЕ, например: (TYPE = 20 или 21), если номер политики одинаков для обоих типов TYPE для идентификатора, а затем проверьте, что DISB_AMT> 1 в двух строках. Если значение равно true, не добавляйте его к кадру данных.
Например: ID 738 имеет одинаковый номер политики MSH39990 в обеих строках. Я написал скрипт для извлечения только чисел, чтобы его было легче сравнивать. ID 738 имеет тот же номер политики. Теперь мы проверяем, если DISB_AMT> 1. В первой строке это не> 1. Во втором ряду мы имеем 3848> 1. Не включайте этот идентификатор в результат. Для идентификатора 892, поскольку НОМЕР ПОЛИТИКИ не совпадает в обоих ТИПАХ, мы проверяем, только если DISB_AMT> 1 для ТИПА 21. Поскольку это не> 1, мы добавляем эту строку в фрейм данных результатов.
Как мне сравнить с другим типом и проверьте, совпадает ли номер политики, и постройте остальную часть лога c?
Ожидаемый результат
ID TYPE POLICY_NUMBER DISB_AMT
892 21 MSH284989 1
Код
data = [{"ID":738,"TYPE":20,"POLICY_NUMBER":"FLDINC MSH39990","DISB_AMT":1},
{"ID":738,"TYPE":21,"POLICY_NUMBER":"MSH39990","DISB_AMT":3848},
{"ID":750,"TYPE":20,"POLICY_NUMBER":"INF395737","DISB_AMT":1},
{"ID":750,"TYPE":21,"POLICY_NUMBER":"INF395737 FLDINCL","DISB_AMT":2350},
{"ID":892,"TYPE":20,"POLICY_NUMBER":"SJK389743","DISB_AMT":3904},
{"ID":892,"TYPE":21,"POLICY_NUMBER":"MSH284989","DISB_AMT":1}
]
df=pd.DataFrame(data)
df['CLEANED_POL_NBR']=df.POLICY_NUMBER.str.extract('(\d+)')