我有一个单独索引的熊猫数据框,我想根据一行中两列的值选择一个单元格。这是一个简单的示例:
>>> 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==11
和B==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
谢谢!
答案 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
我很高兴问了这个问题!