2024-05-23 02:13:14 发布
网友
如何断言以下两个数据帧df1和df2相等?
df1
df2
import pandas as pd df1 = pd.DataFrame([1, 2, 3]) df2 = pd.DataFrame([1.0, 2, 3])
df1.equals(df2)的输出是False。 到目前为止,我知道两种方法:
df1.equals(df2)
False
print (df1 == df2).all()[0]
或者
df1 = df1.astype(float) print df1.equals(df2)
看起来有点乱。有没有更好的方法来做这个比较?
您可以使用assert_frame_equal,而不检查列的数据类型。
assert_frame_equal
# Pre v. 0.20.3 # from pandas.util.testing import assert_frame_equal from pandas.testing import assert_frame_equal assert_frame_equal(df1, df2, check_dtype=False)
使用elegant @Divakar's idea-numpy的allclose()将完成数字的主要技巧:
In [128]: df1 Out[128]: 0 s n 0 1 aaa 1 1 2 aaa 2 2 3 aaa 3 In [129]: df2 Out[129]: 0 s n 0 1.0 aaa 1.0 1 2.0 aaa 2.0 2 3.0 aaa 3.0 In [130]: (np.allclose(df1.select_dtypes(exclude=[object]), df2.select_dtypes(exclude=[object])) .....: & .....: df1.select_dtypes(include=[object]).equals(df2.select_dtypes(include=[object])) .....: ) Out[130]: True
select_dtypes()将帮助您分离字符串和所有其他数字数据类型
您可以使用
assert_frame_equal
,而不检查列的数据类型。使用elegant @Divakar's idea-numpy的allclose()将完成数字的主要技巧:
select_dtypes()将帮助您分离字符串和所有其他数字数据类型
相关问题 更多 >
编程相关推荐