首页 > 解决方案 > 使用来自第二个数据帧的值从一个数据帧中进行选择

问题描述

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

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。

标签: pythonpandasselectionmask

解决方案


如果两个 DataFrmes 中的索引和列相同,则可以使用带有掩码的索引,来自df2with 2d arraycreated by to_numpyor values

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

推荐阅读