Сравните содержимое двух панелей данных, даже если строки упорядочены по-разному - PullRequest
1 голос
/ 26 марта 2019

У меня есть два кадра данных панд, строки которых расположены в разных порядках, но содержат одинаковые столбцы. Моя цель - легко сравнить два кадра данных и убедиться, что они содержат одинаковые строки.

Я пробовал использовать функцию "равно", но, похоже, что-то упускаю, потому что результаты не такие, как ожидалось:

df_1 = pd.DataFrame({1: [10,15,30], 2: [20,25,40]})
df_2 = pd.DataFrame({1: [30,10,15], 2: [40,20,25]})
df_1.equals(df_2)

Я ожидаю, что результат вернет True, потому что оба кадра данных содержат одинаковые строки, только в другом порядке, но он возвращает False.

Ответы [ 2 ]

2 голосов
/ 26 марта 2019

Попробуйте отсортировать и сбросить индекс

df_1.sort_values(by=[1,2]).equals(df_2.sort_values(by=[1,2]).reset_index(drop=True))
1 голос
/ 26 марта 2019

Вы можете указать столбцы для сортировки в DataFrame.sort_values - в моем решении сортировка по всем столбцам и DataFrame.reset_index с drop=True для индексов по умолчанию в обоих DataFrames:

df11 = df_1.sort_values(by=df_1.columns.tolist()).reset_index(drop=True)
df21 = df_2.sort_values(by=df_2.columns.tolist()).reset_index(drop=True)
print (df11.equals(df21))
True
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...