pandas slicing multiindex dataframe
<p>I want to slice a multi-index pandas dataframe</p>

<p>here is the code to obtain my test data: </p>

<pre><code>import pandas as pd

testdf = {
    'Name': {
        0: 'H', 1: 'H', 2: 'H', 3: 'H', 4: 'H'}, 'Division': {
            0: 'C', 1: 'C', 2: 'C', 3: 'C', 4: 'C'}, 'EmployeeId': {
                0: 14, 1: 14, 2: 14, 3: 14, 4: 14}, 'Amt1': {
                    0: 124.39, 1: 186.78, 2: 127.94, 3: 258.35000000000002, 4: 284.77999999999997}, 'Amt2': {
                        0: 30.0, 1: 30.0, 2: 30.0, 3: 30.0, 4: 60.0}, 'Employer': {
                            0: 'Z', 1: 'Z', 2: 'Z', 3: 'Z', 4: 'Z'}, 'PersonId': {
                                0: 14, 1: 14, 2: 14, 3: 14, 4: 15}, 'Provider': {
                                    0: 'A', 1: 'A', 2: 'A', 3: 'A', 4: 'B'}, 'Year': {
                                        0: 2012, 1: 2012, 2: 2013, 3: 2013, 4: 2012}}
testdf = pd.DataFrame(testdf)
testdf
grouper_keys = [
    'Employer',
    'Year',
    'Division',
    'Name',
    'EmployeeId',
    'PersonId']

testdf2 = pd.pivot_table(data=testdf,
                              values='Amt1',
                              index=grouper_keys,
                              columns='Provider',
                              fill_value=None,
                              margins=False,
                              dropna=True,
                              aggfunc=('sum', 'count'),
                              )

print(testdf2)
</code></pre>

<p>gives:</p>

<p><a href="https://i.stack.imgur.com/FKUWq.png"><img src="https://i.stack.imgur.com/FKUWq.png" alt="enter image description here"></a></p>

<p>Now I can get only <code>sum</code> for <code>A</code> or <code>B</code> using </p>

<pre><code>testdf2.loc[:, slice(None, ('sum', 'A'))]
</code></pre>

<p>which gives </p>

<p><a href="https://i.stack.imgur.com/kKrZS.png"><img src="https://i.stack.imgur.com/kKrZS.png" alt="enter image description here"></a></p>

<p>How can I get <strong>both</strong> <code>sum</code> <strong>and</strong> <code>count</code> for only <code>A</code> or <code>B</code></p>

<p>Use <code>xs</code> for cross section</p>

<pre><code>testdf2.xs('A', axis=1, level=1)
</code></pre>

<p><a href="https://i.stack.imgur.com/nx1np.png"><img src="https://i.stack.imgur.com/nx1np.png" alt="enter image description here"></a></p>

<p>Or keep the column level with <code>drop_level=False</code></p>

<pre><code>testdf2.xs('A', axis=1, level=1, drop_level=False)
</code></pre>

<p><a href="https://i.stack.imgur.com/tNenr.png"><img src="https://i.stack.imgur.com/tNenr.png" alt="enter image description here"></a></p>

python pandas pivot-table data-manipulation multi-index