我有两个具有相同索引和列的数据框:
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之间应用蒙版。
答案 0 :(得分:4)
如果两个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]