У меня есть два кадра данных Python одинаковой формы, например:
df1 = pd.DataFrame(np.random.randn(3,2), index=np.arange(3), columns=['a','b'] )
df2 = pd.DataFrame(np.random.randint(0, high=3, size=(3,2)), index=np.arange(3), columns=['a','b'] )
print df1
a b
0 0.336811 -2.132993
1 -1.492770 0.278024
2 -2.355762 -0.894376
print df2
a b
0 1 2
1 0 2
2 2 1
Я хотел бы использовать значения в df2 в качестве индексов строк, чтобы выбрать значения в df1 и создать новый кадр данных равной формы.,Ожидаемый результат:
print df3
a b
0 -1.492770 -0.894376
1 0.336811 -0.894376
2 -2.355762 0.278024
Я пытался использовать .loc, и он хорошо работает для одного столбца:
df3 = df1.loc[df2['a'], 'a']
print df3
0 -1.492770
1 0.336811
2 -2.355762
Но я не смог использовать .loc или .iloc на всехколонны одновременно.Я бы хотел избежать циклов для оптимизации производительности, так как я работаю с большим фреймом данных.Есть идеи?