Подмножество таблицы на основе другой таблицы - PullRequest
0 голосов
/ 05 октября 2018

У меня есть следующие данные:

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 наблюдения с комбинацией id1 и id2, которая присутствует в t2.Данная комбинация может появляться несколько раз в t1, но только один раз в t2.

Спасибо =)

1 Ответ

0 голосов
/ 05 октября 2018

Вы можете сделать это так:

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

Я не уверен, в каком направлении вы хотите написать «лучший» фрагмент кода, но я лично не буду создавать эти строковые столбцы, так как всеинформация уже в кадре данных.Это может быть критерием, который вам может понравиться ...

...