Каждая строка имеет несколько столбцов. Я не могу отсортировать DataFrames по значению столбцов. Мне нужен способ взять первую строку из WrongData и на основе ее значения в двух столбцах Cl1 и Cl2 проверить, есть ли строка в CorrectData DataFrame содержит эти два значения в одних и тех же двух столбцах. Он может находиться в любом месте кадра данных, и строка может присутствовать там несколько раз.
Они выглядят примерно так:
CorrectData:
Код: Выделить всё
Cl1 Time Cl2 OtherData Origin
0x18ddE322 21111 0000000000000000 0xFFFFF 2
0x18ffa800 1234 0000000004100ff3 0xDWAFF 1
0x18ddE322 22121 0000000000000000 0xFFFFF 2
0x18ffa800 11111 0000000004100ff3 0xD213F 1
0x18ddE322 21111 0000000000000000 0xFFFFF 2
Код: Выделить всё
Cl1 Time Cl2 OtherData Origin
0x18ddE322 21111 0000000000000000 0xFFFFF 2
0x18ddE322 21111 0000000000000000 0xFFFFF 2
0x18ffa800 2211 0000000004100ff3 0xDWAFF 1
0x18ddE322 21111 0000000000000000 0xFFFFF 2
0x18ffa800 2211 0000000004100ff3 0xDWAFF 1
0x18ffa800 92121 0000000004100ff3 0xD213F 1
Код: Выделить всё
comparison = pd.merge(CorrectData, WrongData, left_on=["Cl1","Cl2"], right_on=["Cl1","Cl2"], how='inner', indicator=True)
comparison = comparison[comparison['_merge'] != 'both']
print(comparison.to_string())
Когда я попробовал How="outer", возвращенный DataFrame содержал строки. которые были в обоих DataFrames, помечены только как левые или правые. Оба столбца имеют один и тот же тип, в них нет пробелов и других символов. Я понятия не имею, почему он не распознает данные.
Я также пробовал следующее:
Когда How="outer" я получите DataFrame, содержащий некоторые значения, как я сказал выше. Допустим, значение — "0x18ffa800", оно находится в Cl1, а другое – 0000000004100ff3, а оно находится в Cl2
Когда я попробовал:
Код: Выделить всё
first_row= CorrectData.loc[(CorrectData["Cl1"] == '0x18ffa800') & (CorrectData["Cl2"] == '0000000004100ff3')]
first_row
Буду благодарен за любую помощь.
Подробнее здесь: https://stackoverflow.com/questions/789 ... erent-rows