python Dataframe使用数组获取精确值

ars1skjm  于 2022-10-30  发布在  Python
关注(0)|答案(3)|浏览(162)

假设我有以下 Dataframe :

A   B   C   D   Count
0   0   0   0   0   12.0
1   0   0   0   1   2.0
2   0   0   1   0   4.0
3   0   0   1   1   0.0
4   0   1   0   0   3.0
5   0   1   1   0   0.0
6   1   0   0   0   7.0
7   1   0   0   1   9.0
8   1   0   1   0   0.0
... (truncated for readability)

和一个数组:Count
我想访问Count的值,给定上面每列的值。在本例中,这将是row 7,Count = 9.0
我可以通过解构数组中的每个值来使用iloc或at,但这似乎效率很低。我想知道是否有一种方法可以将数组中的值Map到列的值。

jljoyd4f

jljoyd4f1#

您可以使用索引键数据行名称的清单来索引DataFrame,并将产生的检视与数组进行比较,使用NumPy广播一次对每一行进行比较。然后将产生的Boolean DataFrame折迭为具有all()的Boolean数据列索引,并使用该索引来索引Count数据行。
如果df是 Dataframe ,a是数组(或列表):

df.Count.loc[(df[list('ABCD')] == a).all(axis=1)]
inn6fuwd

inn6fuwd2#

我刚才使用了.loc命令,并搜索了如下所示的多个条件:

f = [1,0,0,1]
result = df['Count'].loc[(df['A']==f[0]) & 
                         (df['B']==f[1]) & 
                         (df['C']==f[2]) & 
                         (df['D']==f[3])].values
print(result)

输出:

[9.]

不过,我更喜欢阿恩的回答:)

mspsb9vt

mspsb9vt3#

您可以尝试使用tuple

out = df.loc[df[list('ABCD')].apply(tuple,1) == (1, 0, 0, 1),'Count']
Out[333]: 
7    9.0
Name: Count, dtype: float64

相关问题