我有一个功能,
   
    extract_redundant_values
   
   ,从pandas数据帧中提取冗余行。我正在通过运行来测试它
   
    in_df
   
   生成
   
    out_df
   
   。然后,我将其与我的预期输出进行比较
   
    expected_out_df
   
   。它们似乎具有相同的索引、列和值,但根据
   
    pd.DataFrame().equals()
   
   :
  
  import numpy as np
import pandas as pd
def extract_redundant_values(df, col):
    unique_df = df.drop_duplicates(subset=[col],
                                   keep = False)
    redundant_df = df[~df.index.isin(unique_df.index)]
    return redundant_df
# =============================================================================
# setup
# =============================================================================
expected_columns = ['Col1', 'Col2', 'Col3']
in_df = pd.DataFrame(data = [[1, 2, 3],
                            [4, 6, 6],
                            [7, 8, 9]], 
                    columns = expected_columns)
# =============================================================================
# run 
# =============================================================================
out_df = extract_redundant_values(df = in_df,
                                  col = "Col1")
# =============================================================================
# compare
# =============================================================================
expected_out_df = pd.DataFrame(columns = expected_columns)
#same values, index and dataframe
assert out_df.columns.equals(expected_out_df.columns) #fine
assert out_df.index.equals(expected_out_df.index) #fine
assert np.array_equal(expected_out_df.values, out_df.values) #fine
#not the same for some other reason...
assert out_df.equals(expected_out_df) #assertion error
  
   我还尝试比较了两个具有相同列的空数据帧,这些数据帧和预期的一样好,所以我不明白为什么
   
    out_df
   
   和
   
    预期输出df
   
   被认为是不同的:
  
  expected_columns = ['Col1', 'Col2', 'Col3']
eg_df1 = pd.DataFrame(columns = expected_columns)
eg_df2 = pd.DataFrame(columns = expected_columns)
assert eg_df1.equals(eg_df2) #fine
  
   有人能解释一下吗?
  
  
   谢谢!