Python 基于另一个表的表的子集

Python 基于另一个表的表的子集,python,dataframe,subset,Python,Dataframe,Subset,我有以下数据:   我做了以下操作以获得结果,但我对代码不满意: t1['pairing'] = t1.apply(lambda x: "%s_%s" % (x.id1, x.id2), axis=1)   t2['pairing'] = t2.apply(lambda x: "%s_%s" % (x.id1, x.id2), axis=1)   (t1[t1.pairing.isin(t2.pairing)]).drop("pairing",axis=1) 基本上,我想在t1中保留观察值

我有以下数据:  

我做了以下操作以获得结果,但我对代码不满意:

t1['pairing'] = t1.apply(lambda x: "%s_%s" % (x.id1, x.id2), axis=1)
 
t2['pairing'] = t2.apply(lambda x: "%s_%s" % (x.id1, x.id2), axis=1)
 
(t1[t1.pairing.isin(t2.pairing)]).drop("pairing",axis=1)
基本上,我想在t1中保留观察值,同时保留t2中存在的id1和id2的组合。给定的组合可以在t1中出现多次,但在t2中仅出现一次


谢谢=)

您可以这样做:

mask = t1.apply(lambda row: (row['id1'], row['id2']) in zip(t2.id1, t2.id2), axis=1)
result = t1[mask]

我不确定您希望在哪个方向编写“更好”的代码段,但我个人不会创建这些字符串列,因为所有信息都已经在数据框架中。这可能是你自己喜欢的一个标准……

你能多说一点预期的结果吗?用我目前的非优雅解决方案编辑它似乎不够清晰。Lmk如果它更清晰
t2.pairing.u
在这里给出一个错误。
u
代表什么?打字错误对不起,我必须用手机打字:/I我更喜欢它而不是我的解决方案。谢谢你,你知道有没有类似于合并或加入sql的方法吗?
mask = t1.apply(lambda row: (row['id1'], row['id2']) in zip(t2.id1, t2.id2), axis=1)
result = t1[mask]