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]