使用第二个数据框中的值从一个数据框中选择

时间:2019-04-15 04:57:10

标签: python pandas selection mask

我有两个具有相同索引和列的数据框:

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到第二个df之间应用蒙版。

1 个答案:

答案 0 :(得分:4)

如果两个DataFrmes中具有相同的索引和列,则可以使用df22d array创建的to_numpyvalues中的掩码进行索引:

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