我有两个相同的框架,而不是试图将它们内连接,我得到了一个笛卡尔积。你知道是什么引起的吗?我的列的类型是Int64。
df1 =
operationid siteid
632126 66
632126 66
df2 =
operationid siteid
632126 66
632126 66
在
df1.merge(df2 , how = 'inner' , on = [operationid , siteid ])
,我希望
operationid siteid
632126 66
632126 66
得到
operationid siteid
632126 66
632126 66
632126 66
632126 66
如果在df1和df2中有唯一的记录,您将得到的预期输出。删除副本并尝试合并它们。
您可以使用drop_duplicates()
函数在合并之前删除其中一个数据帧中的重复项:
df1 = df1.drop_duplicates()
desired_df = df1.merge(df2 , how = 'inner' , on = ['operationid' , 'siteid'])
print(desired_df)
输出:
operationid siteid
0 632126 66
1 632126 66
你也可以选择先检查两个数据帧是否相同,如果true
选择其中一个,如果false
继续合并它们,它应该输出相同的结果:
desired_df = pd.DataFrame()
if df1.equals(df2) == True:
desired_df = df1
else:
desired_df = df1.merge(df2 , how = 'inner' , on = ['operationid' , 'siteid'])
print(desired_df)