将两个数据帧与来自两个不同来源的相同数据进行比较失败

问题描述 投票:0回答:1

我已经使用pyhdb库从Hana创建了Pandas数据框,并使用Psycopg2从PostgreSQL创建了另一个数据框。它们都具有相同的数据,例如相同数量的行和列,并且按方式排序。它们都具有5行和5列。如果我使用df1 == df2,则所有内容均显示False。如果使用以下功能,则dataframe_difference(df1, df2, 'both')不会返回任何内容。我尝试了df1.equals(df2)。这也是错误的。

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并再次读取它们,然后我尝试了上述所有方法来检查是否相等。现在一切都是真的。有什么理由在第一种情况下将无法正常工作。如果是,该如何解决?

谢谢

python-3.x pandas postgresql hana
1个回答
0
投票

以下方法显示了差异及其原因,因此可能有助于调试。

from pandas.util.testing import assert_frame_equal
assert_frame_equal(df1, df2) or 
assert_frame_equal(df1, df2, check_dtype=False)
© www.soinside.com 2019 - 2024. All rights reserved.