Мне нужно сравнить два очень похожих фрейма данных, чтобы выявить различия и получить индекс строки с разницей. До прекращения поддержки 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 устарел?