Utiliser.loc avec un MultiIndex dans pandas?
est-ce que quelqu'un sait s'il est possible d'utiliser la base de données?méthode loc pour sélectionner à partir D'un MultiIndex? J'ai la base de données suivante et je voudrais pouvoir accéder aux valeurs situées dans les colonnes 'Dwell', aux indices de ('at', 1)
,('at', 3)
, ('at', 5)
, et ainsi de suite (non séquentiel).
j'aimerais pouvoir faire quelque chose comme data.loc[['at',[1,3,5]], 'Dwell']
, similaire à la data.loc[[1,3,5], 'Dwell']
syntaxe pour un index régulier (qui renvoie une série de 3 valeurs Dwell).
Mon but est de sélectionner un sous-ensemble arbitraire de données, effectuer une analyse sur ce sous-ensemble, et ensuite mettre à jour les nouvelles valeurs avec les résultats de l'analyse. Je prévois d'utiliser la même syntaxe pour définir de nouvelles valeurs pour ces données, donc enchaîner les sélecteurs ne fonctionnerait pas vraiment dans ce cas.
Ici est une tranche de la DataFrame, je travaille avec:
Char Dwell Flight ND_Offset Offset
QGram
at 0 a 100 120 0.000000 0
1 t 180 0 0.108363 5
2 a 100 120 0.000000 0
3 t 180 0 0.108363 5
4 a 20 180 0.000000 0
5 t 80 120 0.108363 5
6 a 20 180 0.000000 0
7 t 80 120 0.108363 5
8 a 20 180 0.000000 0
9 t 80 120 0.108363 5
10 a 120 180 0.000000 0
Merci!
2 réponses
si vous êtes sur la version 0.14, vous pouvez simplement passer un tuple à .loc
comme ci-dessous:
df.loc[('at', [1,3,4]), 'Dwell']
coupe transversale indexation:
In [68]: df.xs('at', level='QGram', drop_level=False).loc[[1,4]]
Out[68]:
Char Dwell Flight ND_Offset Offset
QGram
at 1 t 180 0 0.108363 5
4 a 20 180 0.000000 0