我有一个这样的数据帧列表(在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])