I am using python 3 pandas.
My data frame looks like this :
import pandas as pd
import numpy as np
df = pd.DataFrame(np.array([['eve', "A", True],['eve', 'C', True], ['nathan', 'B', False],['eve', 'C', True], ['eric', 'C', True],['eric', 'D', True]]),
columns=['Name', 'Level', 'Date'])
output :
Name Level Date
0 eve A True
1 eve C True
2 nathan B False
3 eve C True
4 eric C True
4 eric D True
I would like to get :
Name Level Date
Eve A True
C True
C True
eric C True
eric D True
nathan B False
Thanks in advance
If you have:
import numpy as np
import pandas as pd
df = pd.DataFrame(np.array([['eve', "A", True],['eve', 'C', True], ['nathan', 'B', False],['eve', 'C', True], ['eric', 'C', True]]),
columns=['Name', 'Level', 'Date'])
You can do to order rows by the Name
column:
df.sort_values('Name')
Which will give you this:
Name Level Date
4 eric C True
0 eve A True
1 eve C True
3 eve C True
2 nathan B False
Ie in a notebook:
If you want to order rows by frequency of its content in the Name
column, you can do, relying on this & this:
sorteddf = df.assign(frequency = df.groupby('Name')['Name'].transform('count')).sort_values(by=['frequency'],ascending=False).drop('frequency',1)
Giving: