Как я могу сопоставить два разных кадра данных, чтобы показать мне, какие строки совпадают, а какие имеют расхождения (показывая расхождение)

#python #pandas #dataframe #numpy #matching

Вопрос:

У меня есть два кадра данных, и я хотел проверить, содержат ли они одни и те же данные или нет.

df1:

 df1 = [['tom', 10],['nick',15], ['juli',14]]
df1 = pd.DataFrame(df1, columns = ['Name', 'Age'])
 

df2:

 df2 = [['nick', 15],['tom', 10], ['juli',14]]
df2 = pd.DataFrame(df2, columns = ['Name', 'Age'])
 

Обратите внимание, что информация между ними совершенно одинакова. Единственное различие-это порядок строк.

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

 ne = (df != df2).any(1)


ne_stacked = (df != df2).stack()
changed = ne_stacked[ne_stacked]

changed.index.names = ['id', 'col']


difference_locations = np.where(df != df2)
changed_from = df.values[difference_locations]
changed_to = df2.values[difference_locations]

divergences = pd.DataFrame({'df1': changed_from, "df2": changed_to}, index=changed.index)
print(divergences)
 

Я получаю следующий результат:

 GRID SPX RECAP
id   col                
0  Name      tom  nick
   Age        10    15
1  Name     nick   tom
   Age        15    10
 

Я ожидал получить:

 Empty DataFrame
Columns: [df1, df2]
Index: []
 

Как я изменяю код, чтобы они могли проверять каждую строку на кадрах данных, чтобы проверить, совпадают ли они?
А если бы я сравнивал два фрейма данных с разным количеством строк?

Комментарии:

1. Так каков будет результат?

2. Каков ваш ожидаемый результат? Будет ли у всех ваших дел одна и та же информация в разном порядке?

3. Просто отредактировал ожидаемый результат

4. Отредактировано: Если бы я сравнивал два фрейма данных с разными строками фреймов данных?

5. Почему бы сначала не отсортировать их, а затем проверить?