Я сравниваю два фрейма данных (созданных из двух выходных данных sql) и выделяю различия, как показано ниже в файле csv.
Мой код работает, если длина обоих фреймов одинакова. Но он терпит неудачу, если существует другой размер кадра данных.
Я попробовал приведенный ниже код, он работает нормально, если размер обоих фреймов данных одинаков и в том же порядке первичного ключа.
dfdiff = data1.copy()
for row in range(dfdiff.shape[0]):
for col in range(dfdiff.shape[1]):
value_old = data1.iloc[row, col]
value_new = data2.iloc[row, col]
if value_old != value_new:
dfdiff.iloc[row, col] = ('{} -> {}').format(value_old, value_new)
Фактический результат: Если оба кадра данных имеют разную длину: IndexError: один позиционный индексатор выходит за пределы.
Ожидаемый результат: Следует сравнить все строки на основе столбца первичного ключа (независимо от порядка первичного ключа), а оставшиеся строки следует вставить в CSV без форматирования.