【发布时间】:2018-08-20 08:42:19
【问题描述】:
假设我想比较两个数据框的内容,而不是列名(或索引名)。 是否可以在不重命名列的情况下实现此目的?
例如:
df = pd.DataFrame({'A': [1,2], 'B':[3,4]})
df_equal = pd.DataFrame({'a': [1,2], 'b':[3,4]})
df_diff = pd.DataFrame({'A': [1,2], 'B':[3,5]})
在这种情况下,df 是 df_equal 但与 df_diff 不同,因为 df_equal 中的值具有相同的内容,但 df_diff 中的值相同。请注意df_equal 中的列名不同,但我仍然想获得一个真实的值。
我尝试了以下方法:
等于:
# Returns false because of the column names
df.equals(df_equal)
当量:
# doesn't work as it compares four columns (A,B,a,b) assuming nulls for the one that doesn't exist
df.eq(df_equal).all().all()
pandas.testing.assert_frame_equal:
# same as equals
pd.testing.assert_frame_equal(df, df_equal, check_names=False)
我认为可以使用assert_frame_equal,但parameters 似乎都无法忽略列名。
【问题讨论】: