创建函数来测试是否超过 2 个数据帧不同

create function to test whether MORE THAN 2 dataframes are different

我有一个这样的数据帧列表(在 df_lst 中),我需要检查哪些不同。

这里是一些数据框

from pandas._testing import assert_frame_equal
d1 = pd.DataFrame({1: [10], 2: [20]})
d2 = pd.DataFrame({1: [10], 2: [20]})
d3 = pd.DataFrame({1: [11], 2: [20]})
d4 = pd.DataFrame({1: [11], 2: [20]})
d5 = pd.DataFrame({1: [9], 2: [20]})

df_lst=[d1,d2,d3,d4,d5]

我知道你可以查看例如这个命令

assert_frame_equal(d1,d3)

但理想情况下,它必须是一个函数或其他可以让您输入数据帧列表的东西——下面的代码不起作用,因为它缺少一个参数。如果不相等,它应该在此时终止

def check_equality (df_lst):
    for i in df_lst:
        assert_frame_equal(i)

欢迎任何意见。非常感谢!

如果您将列表与单个已知正确的数据帧进行比较,您可以这样做:

def check_equality(df_lst, correct_df):
    for i in df_lst:
        assert_frame_equal(correct_df, i)

如果你想对列表中的所有数据帧进行成对比较,(a, b), (a, c), (a, d), (b, c), etc...你可以试试这个:

from itertools import product

def check_equality(df_lst):
    for pair in product(df_lst, repeat=2):
        assert_frame_equal(pair[0], pair[1])