熊猫,比较2个dataframes在索引和列移动的位置
问题描述:
比方说,我有DF1:熊猫,比较2个dataframes在索引和列移动的位置
filerid usersidid client_op ClientHostID eventSum
0 1 1 5030 6 2
1 1 2 5030 7 1
2 1 3 5030 8 1
和DF2:
ClientHostID usersidid client_op filerid eventSum
0 7 2 5030 1 1
1 6 1 5030 1 2
2 8 3 5030 1 1
现在,我需要检查,如果2个DFS有一个相匹配行(例如,我认为示例中的dfs是匹配的)。
问题是,行和列交换位置,dataframe.equales()检查dfs是否为相同,包括行和列的相同方向。
我无法对行和列重新排序,但我保证列具有相同的标签。
我试图用dataframe.isin,但它工作在单个标签上,我需要检查的行匹配...
任何有识之士将不胜感激, 谢谢
答
试这样的:
for column in df1.columns:
try:
if df1[column] == df2[column]:
print 'match of column %s' %column
except:
pass
希望它有助于
答
您可以重新编制后的比较数据框整体。 例如,如果你知道你的usersidid是在数据帧独特的,你可以这样做:
df1.index = df1.usersidid
df2.index = df2.usersidid
df1.shape[0] * df1.shape[1] == (df1 == df2).sum().sum()
如果返回true,则dataframes是相同的。
(df1 == df2).sum().sum()
给你的细胞数相等,df1.shape[0] * df1.shape[1]
计算细胞总量。
当然,你也可以做它周围的其他方法:
(df1 != df2).sum().sum()
应该返回0