У меня есть 2 кадра данных Pandas, которые имеют неравную длину. Я привел пример ниже. Мой код должен пропустить значение яблок в 1-м кадре данных и найти его, если он существует во втором (всегда будет значение, существующее во втором фрейме данных). Если он находит одно и то же значение, тогда он должен хранить разницу апельсинов в 2 кадрах данных в 1-й кадр данных. Я выполнил эту задачу, используя 2 для циклов, которые также приведены ниже. Следующий код выполняет эту задачу, но мои фактические данные имеют 2 миллиона записей, а второй кадр данных содержит 800 записей. Использовать 2 для циклов сильно замедляет мою программу. Есть ли более эффективный способ выполнения этой задачи?Идентификация аналогичных значений путем итерации между двумя кадром данных Pandas.
trial={'apples': [2,4,1,5,3,2,1,1,4,5],'oranges': [8,5,9,4,2,6,7,5,1,3]}
trial1={'apples': [1,2,3,4,5],'oranges': [2,5,6,3,1]}
df=pd.DataFrame.from_dict(trial)
df1=pd.DataFrame.from_dict(trial1)
F=[]
for i in df.apples.index:
for j in df1.apples.index:
if df.apples.ix[i]== df1.apples.ix[j]:
F.append(df.oranges.ix[i]-df1.oranges.ix[j])
df['difference']=F
Большое спасибо. Это именно то, что я искал. –
Вы можете принять мой ответ, если он разрешит ваш вопрос, в левом верхнем углу моего ответа будет пустой знак галочки, так что вопрос не останется без ответа. – EdChum
Привет, Это действительно работает. Но для моих данных разница для всех столбцов - нан. Однако я могу видеть, что в двух кадрах данных есть соответствующие значения. Метод 2 для цикла работает и дает результаты. –