Est-ce que quelqu'un sait s'il est possible d'utiliser la méthode DataFrame.loc pour sélectionner à partir d'un MultiIndex? J'ai le DataFrame suivant et je voudrais pouvoir accéder aux valeurs situées dans les colonnes 'Dwell', aux indices de ('at', 1)
, ('at', 3)
, ('at', 5)
, etc. (non séquentiel).
J'adorerais pouvoir faire quelque chose comme data.loc[['at',[1,3,5]], 'Dwell']
, semblable à la data.loc[[1,3,5], 'Dwell']
syntaxe pour un index régulier (qui renvoie une série de 3 valeurs Dwell).
Mon objectif est de sélectionner un sous-ensemble arbitraire des données, d'effectuer une analyse uniquement sur ce sous-ensemble, puis de 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, de sorte que les sélecteurs de chaînage ne fonctionneraient pas vraiment dans ce cas.
Voici une tranche du DataFrame avec lequel je travaille:
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!
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']
Essayez l'indexation cross-section :
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