1

I have the following dataframe:

dic = {'US':{'Traffic':{'new':1415, 'repeat':670}, 'Sales':{'new':67068, 'repeat':105677}},
      'UK': {'Traffic':{'new':230, 'repeat':156}, 'Sales':{'new':4568, 'repeat':10738}}}
d1 = defaultdict(dict)
for k, v in dic.items():
    for k1, v1 in v.items():
        for k2, v2 in v1.items():
            d1[(k, k2)].update({k1: v2})

df = pd.DataFrame(d1)

df.insert(loc=0, column=('', 'Mode'), value=[0,5])
df.insert(loc=1, column=('', 'Symbol'), value=[2,1])
df.columns = df.columns.rename("Skateboard", level=0)
df.columns = df.columns.rename("Q3", level=1)

I want to sort the column-Mode Descending and column-Symbol Ascending. I have tried the following:

df.sort_values(by = ['Mode', 'Symbol'], ascending = [False, True])

1 Answer 1

1

Your indexing is incorrect, use:

df.sort_values(by=[('', 'Mode'), ('', 'Symbol')], ascending=[False, True])

Output:

Skateboard                 US            UK       
Q3         Mode Symbol    new  repeat   new repeat
Sales         5      1  67068  105677  4568  10738
Traffic       0      2   1415     670   230    156
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.