Pandas: l'Utilisation de plusieurs colonnes d'un dataframe comme l'indice d'un autre

J'ai une grande dataframe avec mes données, et une autre dataframe de la même première dimension qui contient des métadonnées sur chaque point dans le temps (par exemple, ce numéro d'essai, il a été, ce qu'essai de type).

Ce que je veux faire est de trancher le grande dataframe en utilisant les valeurs de la "metadataframe". Je veux garder ces séparé (plutôt que de stocker la metadataframe comme un multi-indice du plus grand).

Maintenant, je suis en train de faire quelque chose comme ceci:

def my_func(container):
   container.big_df.set_index(container.meta_df[['col1', 'col2']])
   container.big_df.loc['col1val', 'col2val'].plot()

Cependant, il renvoie l'erreur suivante:

ValueError: Must pass DataFrame with boolean values only

Noter que cela fonctionne bien si je ne passe qu'une seule colonne à set_index.

Quelqu'un peut comprendre ce qui ne va pas ici? Sinon, quelqu'un peut me dire que je suis en train de faire cela dans un cadre totalement stupide et hacky façon, et qu'il y a une bien meilleure façon d'aller à ce sujet? 🙂

MA SOLUTION

Merci pour les idées. J'ai joué un peu avec l'indexation un peu, et ce qui semble être la plus facile et la plus rapide. Je n'aimais pas avoir à bande, à l'index de son nom, et de transposer les valeurs, etc. semblait lourd. J'ai réalisé quelque chose d'intéressant (et probablement la peine d'facilement de fixation):

dfa.set_index(dfb[['col1', 'col2']]) 

ne fonctionne pas, mais

dfa.set_index([dfb.col1, dfb.col2])

.

Donc, vous pouvez vous tourner dfb dans une liste de colonnes, de prise de set_index travail, par la convention suivante:

dfa.set_index([dfb[col] for col in ['col1', 'col2']])

OriginalL'auteur choldgraf | 2014-02-18