pandas get_level_values Pour plusieurs colonnes
Y a-t-il un moyen d'obtenir le résultat
http://pandas.pydata.org/panda ... .html
Pour plus d'une colonne?
Compte tenu de ce qui suit
:
Je veux avoir des valeurs / t.
e.
Liste des tuples/ Niveaux
et
:
Entrées
:
Impossible à donner
plus d'un niveau /
par exemple
,
/
Il y a une solution de contournement dans laquelle vous pouvez utiliser
au-dessus de chaque colonne souhaitée et
eux autres ensemble:
Par exemple:
Mais cela devient volumineux, car le nombre de colonnes grandit.
Code pour la construction d'un exemple
:
http://pandas.pydata.org/panda ... .html
Pour plus d'une colonne?
Compte tenu de ce qui suit
DataFrame
:
d
a b c
1 4 10 16
11 17
5 12 18
2 5 13 19
6 14 20
3 7 15 21
Je veux avoir des valeurs / t.
e.
Liste des tuples/ Niveaux
a
et
c
:
[/1, 10/, /1, 11/, /1, 12/, /2, 13/, /2, 14/, /3, 15/]
Entrées
:
Impossible à donner
get_level_values
plus d'un niveau /
par exemple
,
df.index.get_level_values/['a','c']
/
Il y a une solution de contournement dans laquelle vous pouvez utiliser
get_level_values
au-dessus de chaque colonne souhaitée et
zip
eux autres ensemble:
Par exemple:
a_list = df.index.get_level_values/'a'/.values
c_list = df.index.get_level_values/'c'/.values
print/[i for i in zip/a_list,c_list/]/
[/1, 10/, /1, 11/, /1, 12/, /2, 13/, /2, 14/, /3, 15/]
Mais cela devient volumineux, car le nombre de colonnes grandit.
Code pour la construction d'un exemple
DataFrame
:
df = pd.DataFrame/{'a':[1,1,1,2,2,3],'b':[4,4,5,5,6,7,],'c':[10,11,12,13,14,15], 'd':[16,17,18,19,20,21]}/.set_index/['a','b','c']/
Aucun résultat connexe trouvé
Invité:
Pour répondre aux questions, connectez-vous ou registre
2 réponses
Hannah
Confirmation de:
a
donne une liste de tuples pour tous les niveaux de
. Par exemple, avec votre exemple
,
Alors, voici deux idées:
Obtenez une liste de tuples de l'original
Et filtrer le résultat.
L'inconvénient de cette méthode simple est que vous devez spécifier manuellement le niveau de niveaux souhaité. Au lieu de cela, vous pouvez utiliser
, Pour les sélectionner par nom.
Créer MultiIndex, qui a ces niveaux que vous voulez et appelez
Sur lui.
Si vous préférez appeler les niveaux que vous souhaitez enregistrer —, et pas ceux que vous voulez perdre —, Vous pouvez faire quelque chose comme
Alice
Confirmation de:
Je n'ai pas trouvé de moyen de choisir des niveaux
et
directement de l'objet d'index, utilisez donc
.
noter que
Renvoie une liste des listes, pas des tuples: