Ao executar o trecho de código de exemplo abaixo com o pandas 2.2.3, recebo um erro dizendo KeyError: 'D'
index = pd.MultiIndex.from_tuples(
[('A', 1), ('A', 2), ('A', 3), ('B', 1), ('B', 2), ('B', 2)],
names=['letter', 'number']
)
df = pd.DataFrame({'value': [10, 20, 30, 40, 50, 60]}, index=index)
idx = pd.IndexSlice
result = df.loc[idx[['A', 'D'], [1,2]], :]
O pandas oferece alguma alternativa para pesquisar um multi-índice com valores que não existem?
Se eu executar o mesmo código usando o pandas 1.5.3, obtenho o valor esperado:
value
letter number
A 1 10
2 20
Ao executar este código,
pandas 1.5.3
você deverá receber de fatoFutureWarning
:(Observe que deveria ser lido: " não estão presentes".)
Então, vamos realmente usar
Index.isin
para permitir indexação booleana :Saída:
Se você tiver muitas condições diferentes, você pode considerar criar um dicionário e usar
np.logical_and
+reduce
: