Voici le exemple de fichier de données et j'ai effectué l'opération suivante dans ipython notebook :
!curl -O http://pbpython.com/extras/sales-funnel.xlsx
df = pd.read_excel('./sales-funnel.xlsx')
df['Status'] = df['Status'].astype('category')
df["Status"].cat.set_categories(["won","pending","presented","declined"],inplace=True)
table = pd.pivot_table(df,
index=['Manager', 'Status'],
values=['Price', 'Quantity'],
columns=['Product'],
aggfunc={'Price':[np.sum, np.mean], 'Quantity':len},
fill_value=0
)
Voici à quoi ressemblent les données dans table
:
Je veux sélectionner (Manager=="Debra Henley") & (Status=="won")
et il fonctionne avec le query
méthode :
table.query('(Manager=="Debra Henley") & (Status=="won")')
Mais comment effectuer la même sélection avec loc
? J'ai essayé mais cela ne fonctionne pas :
table.loc[['Debra Henley', 'won']]
Qu'est-ce que vous utilisez habituellement avec MultiIndex ? Quelle est la meilleure façon de le faire ?
Mise à jour : deux solutions ont été trouvées jusqu'à présent :
table.xs(('Debra Henley','won'), level=('Manager', 'Status'))
table.loc[[('Debra Henley', 'won')]]
Donc je suppose tuples
doit être utilisé à la place de lists
lors de l'indexation avec MultiIndex ?