基于另一个选项卡的表的子集

2024-05-23 14:39:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下数据:   你知道吗

t1 = pd.DataFrame({'date': ['d1','d1','d2','d1'],'id1': ['Apple', 'Pear','Pear','Pear'], 'id2': ['Blue', 'Orange','Blue','Orange']})   
t2 = pd.DataFrame({'id1': ['Apple','Pear'], 'id2': ['Orange', 'Orange']})
 

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

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中只出现一次。你知道吗

你知道吗 谢谢=)


Tags: lambdaappledataframeblued1pdapplypear
1条回答
网友
1楼 · 发布于 2024-05-23 14:39:40

你可以这样做:

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

我不确定您想从哪个方向编写“更好”的代码段,但我个人不会创建那些字符串列,因为所有信息都已经在dataframe中了。这可能是你自己喜欢的标准。。。你知道吗

相关问题 更多 >