У меня возникла следующая проблема: Получено 2 pandas фреймов данных, например:
importdf:
System Email
1 Basic testimail@yahoo.com
2 Basic anotheremail@yahoo.com
3 Backend newemail@yahoo.com
userdf:
System Email
1 Basic testimail@yahoo.com
2 Backend anotheremail@yahoo.com
3 Basic newemail@yahoo.com
Что мне нужно сделать, так это удалить каждую строку в importdf, которая существует в userdf. Поскольку у меня есть несколько дополнительных столбцов с разными данными в исходных DataFrames, я не могу просто указать pandas, чтобы удалить дублированные строки. На этом этапе я использую следующий код, чтобы справиться с этим:
importdf_system = importdf['System'].tolist()
importdf_emails = importdf['Email'].tolist()
userdf_system = userdf['System'].tolist()
userdf_emails = userdf['Email'].tolist()
importdf.reset_index(drop=True)
userdf.reset_index(drop=True)
counter = len(importdf)
for i in range(len(importdf)):
counter = counter - 1
print(counter)
for j in range(len(userdf)):
if "@" in str(importdf_emails[i]) and "@" in str(userdf_emails[j]) and str(importdf_emails[i]).lower() == str(userdf_emails[j]).lower():
importdf = importdf.drop([i])
Иногда этот код работает хорошо, но для его выполнения требуются часы, потому что фреймы данных огромны. Кроме того, иногда я получаю такие ошибки, как KeyError: '[1782] not found in axis'
Я искал способ лучше, но не нашел полезного решения. Нашел способ использовать 1 столбец для поиска существующих данных, но проблема в том, что мне нужно удалить строки, только если система и электронные письма одинаковы. например, если я получил тот же адрес электронной почты, но с другой системой в строке, он должен остаться.