如何比较两个含pandas DataFrame的列表?解决相等判断报错问题
解决方法
直接用a == b会报错,因为列表里的两个DataFrame结构不匹配,pandas的==运算符要求DataFrame必须索引和列完全一致才能做元素级比较。你可以用下面两种方式实现需求:
方法一:自定义比较函数
import pandas as pd def compare_df_lists(list1, list2): # 先判断两个列表长度是否一致 if len(list1) != len(list2): return False # 逐个用pandas的equals方法比较DataFrame for df1, df2 in zip(list1, list2): if not df1.equals(df2): return False return True a = [pd.DataFrame([1,2,3])] b = [pd.DataFrame([])] print(compare_df_lists(a, b)) # 输出: False
方法二:一行代码实现
import pandas as pd a = [pd.DataFrame([1,2,3])] b = [pd.DataFrame([])] result = len(a) == len(b) and all(df1.equals(df2) for df1, df2 in zip(a, b)) print(result) # 输出: False
为什么这样可行?
df.equals(other)是pandas专门用来判断两个DataFrame是否完全相等的方法——它会先检查两个DataFrame的索引、列、数据类型是否一致,一致再比较所有元素的值;只要结构或值有一个不一样,就返回False,不会像==那样抛出错误。
内容的提问来源于stack exchange,提问作者royalewithcheese
相关产品推荐
相关产品推荐

