2016-05-03 2 views
0

У меня есть два фрейма данных df1 и df2, которые, как мне говорят, разделяют некоторые строки. То есть для некоторых индексов (i, j) _n df1.loc [i] == df2.loc [j] точно. Я бы хотел найти эту корреспонденцию., определяющий, какие строки присутствуют в другом фрейме данных

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

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

matching_idx=[] 
for ix in df1.index: 
    match =df1.loc[ix:ix].to_dict(orient='list') 
    matching_idx.append(df2.isin(match).all(axis=1) ) 

Было бы здорово избавиться от цикла for, но я не уверен, что это возможно.

ответ

1

Предполагая, что строки в каждом ядре данных уникальны, вы можете объединить два кадра данных и искать дубликаты.

df1 = pd.DataFrame({'A': ['a', 'b'], 'B': ['a', 'c']})  
df2 = pd.DataFrame({'A': ['c', 'a'], 'B': ['c', 'a']}) 

>>> df1 
    A B 
0 a a 
1 b c 

>>> df2 
    A B 
0 c c 
1 a a 

df = pd.concat([df1, df2]) 

# Returns the index values of duplicates in `df2`. 
>>> df[df.duplicated()] 
    A B 
1 a a 

# Returns the index value of duplicates in `df1`. 
>>> df[df.duplicated(keep='last')] 
    A B 
0 a a 
+0

Я считаю, PYOak имеет вы бьете в простоте – user3391229

+0

Но вы теряете индекс местоположение строки, содержащей дубликат. Обратите внимание, что первый пример индексируется в '1', расположение дупа в' df1'. Второй пример проиндексирован на '0', расположение дубликата в' df2' – Alexander

+0

Аг вы правы. Я даю вам правильный ответ, чтобы дать лучший ответ на этот вопрос, хотя я реализую решение PYOak. – user3391229

1

Вы можете сделать слияние, которая объединяет все столбцы:

match = df1.merge(df2, on=list(df1.columns)) 
+0

Я пытался смущающе долгое время пытаться «слить» на работу ... возиться с «индикатором», , «внутренний» и «on_left» и т. д. и т. д. Большое спасибо за решение! – user3391229

Смежные вопросы

 Смежные вопросы