Выбор из одного кадра данных с использованием значений из второго кадра данных - PullRequest
1 голос
/ 15 апреля 2019

У меня есть два кадра данных с одинаковым индексом и столбцами:

In: import pandas as pd
import numpy as np
import random
df1 = pd.DataFrame({'A' : [ random.random(), random.random(), random.random()],
                   'B' : [ random.random(), random.random(), random.random()],
                   'C' : [ random.random(), random.random(), random.random()]})
df2 = pd.DataFrame({'A' : [random.randint(0,10), random.randint(0,10), random.randint(0,10)],
                   'B' : [random.randint(0,10), random.randint(0,10), random.randint(0,10)],
                   'C' : [random.randint(0,10), random.randint(0,10), random.randint(0,10)]})


df1
Out:
    A   B   C
0   0.424566    0.054485    0.830993
1   0.673692    0.754941    0.621544
2   0.890594    0.805776    0.878123
In: df2
Out:

    A   B   C
0   9   9   3
1   4   6   6
2   10  2   9

Я хочу выбрать значения из df1 в зависимости от соответствующего значения в df2 и вернуть его в виде массива.

например, выбор по значению 6 в приведенном выше примере вернул бы [0.754941, 0.621544]

Я смотрел на mask, но не вижу, как применить маску от одного df ко второмуДФ.

1 Ответ

4 голосов
/ 15 апреля 2019

Если один и тот же индекс и столбцы в обоих DataFrmes, возможно использовать индексирование с маской от df2 с 2d array, созданным to_numpy или values:

#pandas 0.24+
a = df1.to_numpy()[df2 == 6]
#oldier pandas versions
#a = df1.values[df2 == 6]
print (a)
[0.754941 0.621544]
...