2015-04-27 4 views
2

У меня есть две панды Dataframe df1 и df2. Оба имеют общую колонку dealer. Я хочу подмножество df1 для всех тех dealer, которые присутствуют в df2. Как мне это сделать?dataframe pandas subset series

ответ

0

Использование isin:

df1[df1['delear'].isin(df2['delear'])] 

Пример:

In [24]: 

df1 = pd.DataFrame({'delear':np.arange(5)}) 
df2 = pd.DataFrame({'delear':[2,4]}) 
df1[df1['delear'].isin(df2['delear'])] 
Out[24]: 
    delear 
2  2 
4  4 

В ситуации, когда вы можете иметь повторяющиеся значения в df2 колонке 'дистрибьютер' вы можете получить уникальные значения по телефону unique:

In [26]: 

df2 = pd.DataFrame({'delear':[2,4,4,4,4]}) 
df2['delear'].unique() 
Out[26]: 
array([2, 4], dtype=int64) 

Таким образом, код тогда становится:

df1[df1['delear'].isin(df2['delear'].unique())] 
+0

Незначительное дополнение 'df1 [df1 ['delear']. Isin (df2 ['delear']. Unique)]' может быть оптимальным, если имеется много повторяющихся значений? – Zero

+0

Да, было бы, но ОП не указал или не показал ничего, чтобы указать, могут ли быть повторяющиеся значения, будет обновляться, тем не менее, – EdChum

+0

. Мне не пришлось беспокоиться о «уникальном», поскольку я уже дедуплицировал данные. –