Python 合并索引未按预期运行
我试图在一行中执行反连接。但是,我的一行解决方案并没有给我将代码分成两行时接收到的相同结果(其行为与预期的一样)。具体来说,单行解决方案会产生行数较少的数据帧 我的反连接的目标是删除Python 合并索引未按预期运行,python,pandas,dataframe,join,Python,Pandas,Dataframe,Join,我试图在一行中执行反连接。但是,我的一行解决方案并没有给我将代码分成两行时接收到的相同结果(其行为与预期的一样)。具体来说,单行解决方案会产生行数较少的数据帧 我的反连接的目标是删除df和df\u subset1的唯一\u id的任何重叠。结果将是df_subset2 单线: df_subset2 = df.loc[df.merge(df_subset1['UNIQUE_ID'], on = 'UNIQUE_ID', how = 'outer', indicator = True)._merge
df
和df\u subset1
的唯一\u id的任何重叠。结果将是df_subset2
单线:
df_subset2 = df.loc[df.merge(df_subset1['UNIQUE_ID'], on = 'UNIQUE_ID', how = 'outer', indicator = True)._merge == 'left_only']
多行:
df_subset2 = df.merge(df_subset1['UNIQUE_ID'], on = 'UNIQUE_ID', how = 'outer', indicator = True)
df_subset2 = df_subset2.loc[df_subset2._merge == 'left_only']
这些都会产生不同的结果,但从我的角度来看,这一行仍应按预期工作。合并是否会更改基础数据帧的索引?这是我能想到的唯一原因,它会导致
.loc
操作选择不同。要获得一行解决方案,您可以尝试将df.merge()
调用与以下调用链接:
df_subset2 = df.merge(df_subset1['UNIQUE_ID'], on = 'UNIQUE_ID', how = 'outer', indicator = True).query('_merge == "left_only"')
df.merge
的结果具有不同的大小(行数),尤其是在使用“外部”联接时。对于您的情况,如果使用左连接而不是外部连接会更好吗?明白了--听起来像是merge
更改了索引,从而导致.loc
的行为不同。我不能在这里进行左连接,因为我特别尝试删除与右数据帧的重叠。这就是为什么我要使用指示符并选择where\u merge==“left\u only”
在这种情况下,请尝试将您的呼叫链接到.query()
呼叫。详情见下文。因为没有你的测试数据,我没有机会测试它。但是你可以试试。谢谢,这个很好用。我完全忘记了查询
方法。。。肯定会用这个更进一步