Сравнивать два кадра данных с одинаковыми данными из двух разных источников не удается - PullRequest
0 голосов
/ 13 марта 2020

Я создал Pandas фрейм данных из Ханы, используя библиотеку pyhdb, и создал другой фрейм данных из PostgreSQL, используя Psycopg2. Оба они имеют одинаковые данные, такие как одинаковое количество строк и столбцов и отсортированы по пути. Оба они имеют 5 строк и 5 столбцов. Если я использую df1 == df2, он показывает False для всего. Если я использую приведенную ниже функцию, она ничего не возвращает за dataframe_difference(df1, df2, 'both'). Я пытался df1.equals(df2). Это также False.

def dataframe_difference(df1, df2, which=None):
    """Find rows which are different between two DataFrames."""
    comparison_df = df1.merge(df2,
                              indicator=True,
                              how='outer')
    if which is None:
        diff_df = comparison_df[comparison_df['_merge'] != 'both']
    else:
        diff_df = comparison_df[comparison_df['_merge'] == which]
    diff_df.to_csv('diff.csv')
    return diff_df

Теперь я пишу df1 и df2 в csv и читаю их снова, и я попробовал все вышеописанные методы, чтобы проверить равенство. Теперь все верно. Есть ли причина, по которой это не сработает в первом сценарии. Если да, то как это решить?

Спасибо

1 Ответ

0 голосов
/ 13 марта 2020

Следующий метод показывает различия и их причину, поэтому он может помочь при отладке.

from pandas.util.testing import assert_frame_equal
assert_frame_equal(df1, df2) or 
assert_frame_equal(df1, df2, check_dtype=False)
...