#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. Почему бы сначала не отсортировать их, а затем проверить?