Как подготовить и сравнить два кадра данных в Pandas с невыровненными наборами данных - PullRequest
1 голос
/ 28 февраля 2020

Я новичок в stackoverflow, а также Python и Pandas, поэтому, пожалуйста, прости за проблемы с форматированием в этом вопросе. Я благодарен за все дружеские комментарии, так как я хотел бы изучить и использовать возможности сравнения данных.

У меня есть два файла .xlsx, которые я преобразую в кадры данных df1 и d2, используя python и pandas.

Допустим, что оба выглядят так:

import pandas as pd
def main():
data1 = {"Col1":["Name1", "Name2", "Name3", "Name4", "Name5"], "Col2":["Street1", "Street2", "Street3", "Street4", "Street5"], "Col3":["Phone1", "Phone2", "Phone3", "Phone4", "Phone5"],}
data2 = {"Col1":["Name1", "Name3", "New", "Name5", "New2", "Name6"], "Col2":["Street1", "Street3", "New", "Street5", "New2", "Street6"], "Col3":["Phone1", "Phone3", "New", "Phone5", "New2", "Street6"],}    
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
print(df1)
print(df2)

Оба имеют одинаковую структуру , но оба содержат также две пустые строки после строки, содержащей заголовок ( не показано в примере кода).

Сначала эти строки и заголовок необходимо игнорировать по умолчанию (начиная с строки = 4). Затем мне нужно сравнить df1 и df2, чтобы найти строки, которые НЕ находятся в df2 по индексу типа «Col1» (здесь 2-я и 4-я строки из d1).

Они должны быть напечатаны с комментарием, например:

"df2.Name2", "df2.Name4": ушел "или аналогичным, сохраняются в файл .xlsx и удаляются для создания новый фрейм данных df3

После этого мне нужно найти новые записи в df2, которых нет в df3, и извлечь эти новые строки в другой файл .xlsx.

Я также хотел бы создать четвертый фрейм данных df4 с данными из df3 плюс пустые строки, в которых были найдены новые записи в df2, которые выглядят следующим образом:

data4 = {"Col1":["Name1", "Name3", " ", "Name5", " ", "Name6"], "Col2":["Street1", "Street3", " ", "Street5", " ", "Street6"], "Col3":["Phone1", "Phone3", " ", "Phone5", " ", "Name6"]}
df4 = pd.DataFrame(data4)
print(df4)

Теперь аналогичные данные df2 и df4 снова находятся в тех же строках и могут быть сравнены на следующем шаге. чтобы найти изменения в некоторых столбцах (не показано в примере).

Я пытался создать некоторые коды, используя функции concentate или merge, но так как удаленные и новые строки изменяют порядок строк, эти «одинаковые» данные больше не выровнены, и результат слишком высок, поэтому описанная подготовка данных - моя главная проблема.

Заранее большое спасибо за вашу помощь.

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