У меня есть 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 только с некоторыми указанными столбцами ... потому что он удаляет все дубликаты (или все, кроме одного): мне нужно удалить только один из них.