У меня есть два фрейма данных как
import pandas as pd
points = pd.DataFrame({'player':['a','b','c','d','e'],'points':[2,5,3,6,1]})
matches = pd.DataFrame({'p1':['a','c','e'], 'p2':['c', 'b', 'd']})
Я хочу сохранить только те строки из совпадений фреймов данных, где точки p1 и p2 имеют значения больше 2. Сейчас я сначала объединяю точки и совпадения на p1 иЗатем игрок объединяет полученный фрейм данных и точки на p2 и player.После этого применяем фильтр к обеим точкам столбцов результирующего кадра данных.
new_df = pd.merge(matches, points, how = 'left', left_on = 'p1', right_on = 'player')
new_df = pd.merge(new_df, points, how = 'left', left_on = 'p2', right_on = 'player')
new_df = new_df[(new_df.points_x >2) & (new_df.points_y >2)]
Это дает мне то, что мне нужно, но мне было интересно, что будет лучшим и эффективным способом сделать это?