Как сравнить и найти различия в двух фреймах данных без pd.Panel (устарело) - PullRequest
0 голосов
/ 13 июля 2020

Мне нужно сравнить два очень похожих фрейма данных, чтобы выявить различия и получить индекс строки с разницей. До прекращения поддержки pd.Panel я делал вот что:

diff_panel = pd.Panel(dict(df1=df1, df2=df2))

Затем я написал очень простую функцию, которая добавляла стрелку в ячейку с разницей.

def report_diff(x):
    return x[0] if x[0] == x[1] else '{} ---> {}'.format(*x)

И я применял его к diff_panel:

diff_output = diff_panel.apply(report_diff, axis=0)

Затем в моем новом фрейме данных я применял еще одну простую функцию, чтобы определить, в какой ячейке есть стрелка, добавленная на предыдущем шаге, возвращая Y, если была стрелку и N., если нет.

diff_output['has_change'] = diff_output.apply(has_change, axis=1)

В конце я просто использовал .lo c, чтобы уловить, где столбец has_change имел Y, взять индекс этих строк и использовать. ix, чтобы получить эти строки в моем исходном df1.

diff_df = diff_output.loc[diff_output['has_change'] == 'Y']
diff_index = diff_df.index.tolist()
changes_df = df1.ix[diff_index]

Как я могу сделать то же самое теперь, когда pd.Panel устарел?

...