我想说的是,两个字母是一样的. 当使用df1 == df2与np.nan的,测试不通过,而当我使用pd.testing.assert_frame_equal作品.

import pandas as pd
import numpy as np

data = {'A': [1, 2], 'B': [np.nan, np.nan]}
df1 = pd.DataFrame(data)
df2 = pd.DataFrame(data)

# First Option
print((df1 == df2).all().all())

# First option Issues
print((df1 == df2))

# Second Option passes
print(pd.testing.assert_frame_equal(df1, df2) is None)

任何帮助都将不胜感激.

推荐答案

NaN不等于他们自己.

float('nan') == float('nan')
# False

这使得它不可能只使用(df1 == df2).all().all().

您还需要判断NaN状态:

(df1.eq(df2)|df1.isna()).all().all()
# True

assert_frame_equal处理NaN相等.

Python-3.x相关问答推荐

根据收件箱内部的值以行降序的特定顺序重新排序列

TypeError:&Quot;Value&Quot;参数必须是标量、Dict或Series,但您传递了&Quot;Index&Quot;

Pandas :从元组字典创建数据帧

Python GUI:tkinter应用程序作为Windows的实时桌面

PANDAS中当前数据帧的匹配与更新

添加任意数量的 pandas 数据框

为什么空列表也能起作用?

try 使用 GEKKO 求解非线性方程组.系统有多种解决方案,但 GEKKO 给出了错误的解决方案.我该如何解决?

在 python 中使用正则表达式在行尾查找特定元素

!date 的命令无法从 jupyter notebook 运行

有没有办法使用 python opencv 计算与图像的白色距离

Snakemake 'run' 指令不产生错误信息

如何将虚拟变量列转换为多列?

如何从 Python 3.5 降级到 Python 3.4

django.core.exceptions.ImproperlyConfigured

简单的 get/post 请求在 python 3 中被阻止,但在 python 2 中没有

作为函数对象属性的 __kwdefaults__ 有什么用?

接收导入错误:没有名为 *** 的模块,但有 __init__.py

为什么 string.maketrans 在 Python 3.1 中不起作用?

对字节进行按位运算