'How to edit/ sort a non-column column in Python?

I wrote the script below, and I'm 98% content with the output. However, the unorganized manner/ disorder of the 'Approved' field bugs me. As you can see, I tried to sort the values using .sort_values() but was unsuccessful. The output for the written script is below, as is the list of fields in the data frame.

df = df.replace({'Citizen': {1: 'Yes', 
                             0: 'No'}})

grp_by_citizen = pd.DataFrame(df.groupby(['Citizen']).agg({i: 'value_counts' for i in ['Approved']}).fillna(0))
grp_by_citizen.rename(columns = {'Approved': 'Count'}, inplace = True)
grp_by_citizen.sort_values(by = 'Approved')
grp_by_citizen

enter image description here

enter image description here

Do let me know if you need further clarification or insight as to my objective.



Solution 1:[1]

You need to reassign the result of sort_values or use inplace=True. From documentation:

Returns: DataFrame or None
      DataFrame with sorted values or None if inplace=True.

grp_by_citizen = grp_by_citizen.sort_values(by = 'Approved')

Solution 2:[2]

First go with:

f = A.columns.values.tolist()

To see what is the actual names of your columns are. Then you can try:

A.sort_values(by=f[:2])

And if you sort by column name keep in mind that 2L is a long int, so just go:

A.sort_values(by=[2L])

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 n1colas.m
Solution 2 SardorBek