Если вы делаете samples
DataFrame со столбцами user
и item
, вы можете получить желаемые значения с помощью внутреннего соединения . По умолчанию pd.merge
объединяется во все столбцы samples
и df
совместно используемые - в этом случае это будут user
и item
. Следовательно,
result = pd.merge(samples, df, how='inner')
дает
user item f1 f2 f3
0 1 5 9 4 4
1 3 7 17 6 5
2 3 7 17 6 5
3 2 6 16 5 5
import numpy as np
import pandas as pd
d = {'user' : [1., 2., 3., 4] ,'item' : [5., 6., 7., 8.],'f1' : [9., 16., 17., 18.], 'f2':[4,5,6,5], 'f3':[4,5,5,8]}
df = pd.DataFrame(d)
samples = np.array([[1,5],[3,7],[3,7],[2,6]])
samples = pd.DataFrame(samples, columns=['user', 'item'])
result = pd.merge(samples, df, how='inner')
result = result[['f1', 'f2', 'f3']]
result = result.values
print(result)
дает
[[ 9. 4. 4.]
[ 17. 6. 5.]
[ 17. 6. 5.]
[ 16. 5. 5.]]