Python DataFrames: поиск * почти "идентичных строк - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть DF, загруженный заказами.Некоторые из них содержат отрицательные величины, и причина в том, что они фактически являются отменами предыдущих заказов.

Проблема, нет уникального ключа, который мог бы помочь мне найти, какой заказ соответствует какой отмене.

Итак, я построил следующий код («отмены» - это подмножество исходных данных, содержащее только строки, соответствующие ... ну ... отмены):

for i, item in cancelations.iterrows(): 
    #find a row similar to the cancelation we are currently studying:        
    #We use item[1] to access second value of the tuple given back by iterrows()
    mask1 = (copy['CustomerID'] == item['CustomerID']) 
    mask2 = (copy['Quantity'] == item['Quantity'])
    mask3 = (copy['Description'] == item['Description'])   
    subset = copy[ mask1 & mask2 & mask3]
    if subset.shape[0] >0: #if we find one or several corresponding orders :
            print('possible corresponding orders:', subset.index.tolist())
            copy = copy.drop(subset.index.tolist()[0]) #retrieve only the first ot them from the copy of the data

Итакэто работает, но: во-первых, чтобы бежать, нужно вечно;и во-вторых, я где-то читал, что когда бы вы ни писали сложный код для манипулирования фреймами данных, для него уже есть метод.Так, может быть, кто-то из вас знает что-то, что может мне помочь?

спасибо за ваше время!

edit: заметьте, что иногда у нас может быть несколько заказов, которые могут соответствовать отмене под рукой.Вот почему я не использовал drop_duplicates только с некоторыми указанными столбцами ... потому что он удаляет все дубликаты (или все, кроме одного): мне нужно удалить только один из них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...