Pandas 使用索引dict获取列值
我有以下几点:Pandas 使用索引dict获取列值,pandas,dictionary,Pandas,Dictionary,我有以下几点: value index1 index2 index3 1 1 1 10.0 2 -0.5 3 0.0 2 2 1 3.0 2 0.0 3 0.0 3 1
value
index1 index2 index3
1 1 1 10.0
2 -0.5
3 0.0
2 2 1 3.0
2 0.0
3 0.0
3 1 0.0
2 -5.0
3 6.0
我想使用dict来获得特定索引组合的“值”
通常,我使用,例如:
df = df.iloc[df.index.isin([2],level='index1')]
df = df.iloc[df.index.isin([3],level='index2')]
df = df.iloc[df.index.isin([2],level='index3')]
value = df.values[0][0]
现在,我想使用以下字典以较短的方式获得我的值=-5:
d = {'index1':2,'index2':3,'index3':2}
此外,如果我使用:
d={'index1':2,'index2':3}
我想获得阵列:
[0.0,-5.0,6.0]
提示?您可以使用类似SQL的方法: 另一条格言:
In [77]: d = {'index1':2,'index2':3}
In [78]: df.query(' and '.join('{}=={}'.format(k,v) for k,v in d.items()))
Out[78]:
value
index1 index2 index3
2.0 3.0 1 0.0
2 -5.0
3 6.0
非查询方式是
In [64]: df.loc[np.logical_and.reduce([
df.index.get_level_values(k) == v for k, v in d.items()])]
Out[64]:
value
index1 index2 index3
2 3 2 -5.0
我是如此接近,但这是非常动态的。是的,一般的解决方案只有使用
query
In [64]: df.loc[np.logical_and.reduce([
df.index.get_level_values(k) == v for k, v in d.items()])]
Out[64]:
value
index1 index2 index3
2 3 2 -5.0