从具有基于多个列的选择的 pandas 数据框中获取单个值



我有一个单独索引的熊猫数据帧,我想根据一行两列的值选择一个单元格。下面是一个简单的示例:

>>> import pandas as pd
>>> data_dict = {'A':[11,11], 'B':[22,33], 'C':[44,55]}
>>> df = pd.DataFrame.from_dict(data_dict)
>>> df
A   B   C
0  11  22  44
1  11  33  55

给定 A 和 B 的值,我想获取 C 的值。例如,如果我知道A==11B==22,我想得到44。我的问题是:

在保持数据帧索引的同时执行此操作的最佳方法是什么?

我知道我可以通过变量属性来做到这一点,但我不确定这是最简单的。看起来很乱:

>>> df[(df['A']==11) & (df['B']==22)]['C'].item()
44

我也知道一种干净的方法,它可以临时创建如下所示的多索引,但是如果我无法在没有如此复杂的查询的情况下从单索引数据帧中获取44,我觉得我错过了一些关于数据帧的简单知识。

>>> df2 = df.set_index(['A','B'])
>>> df2
C
A  B
11 22  44
33  55
>>> df2.loc[11,22].item()
44

谢谢!

谢谢你@pazitos10。我认为查询使它更具可读性:

>>> df.query('A==11 & B==22')['C'].item()
44

谢谢你@ALollz!这个选择也更具可读性!

>>> df.loc[df.A.eq(11) & df.B.eq(22), 'C'].item()
44

我很高兴我问了这个问题!

最新更新