我已经使用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并再次读取它们,然后我尝试了上述所有方法来检查是否相等。现在一切都是真的。有什么理由在第一种情况下将无法正常工作。如果是,该如何解决?
谢谢
以下方法显示了差异及其原因,因此可能有助于调试。
from pandas.util.testing import assert_frame_equal
assert_frame_equal(df1, df2) or
assert_frame_equal(df1, df2, check_dtype=False)