У меня есть 2 кадра данных со столбцом с именем frames
. Кадры данных - это данные, извлеченные из двух видео, записанных одновременно двумя участниками. В данных отсутствуют некоторые кадры (разные для каждого видео) из-за неудачного отслеживания. Я хочу взять пересечение на основе целочисленного значения кадра df['frame']
.
Аналогичный вопрос размещен здесь: Панды - пересечение двух фреймов данных на основе записей в столбцах
, но принятый ответ - соединение, а не пересечение.
Пример данных
import pandas as pd
df1 = pd.DataFrame(data={'frame': [1, 2, 3]})
df2 = pd.DataFrame(data={'frame': [2, 3, 4]})
Желаемый вывод
Удалены строки, не объединенные в df1['frame']
и df2['frame']
>>> print(df1)
frame
1 2
2 3
>>> print(df2)
frame
0 2
1 3
(я могу сбросить индекс после завершения обработки с помощью df1.reset_index(drop=True)
)
Пытались
Сначала я подумал о том, чтобы получить пересечение столбца кадров обоих информационных кадров с помощью:
df1_idx = df1['frame']
df2_idx = df2['frame']
intersection_idx = df1_idx.intersection(df2_idx)
Ошибка:
File "/*python_path*/site-packages/pandas/core/generic.py", line 3081, in __getattr__
return object.__getattribute__(self, name)
AttributeError: 'Series' object has no attribute 'intersection'
После получения индексов фреймов, которые находятся в обоих фреймах данных, я подумал о том, чтобы сделать что-то вроде (упомянуто в: удаление строк из фрейма данных на основе условия «не в» ):
df1 = df1.drop(df[~df['frame'].isin(intersection_idx)])
System
Python 3.6.5 с пандами 0.22.0, установленными с Anaconda.