从熊猫数据框中获取一个基于多个列的选择的值

时间:2018-10-12 23:53:27

标签: python 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

谢谢!

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

谢谢@ALollz!此选择也更具可读性!

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

我很高兴问了这个问题!