Python 3 pandas : 转换数据框以获得级别

Python 3 pandas : Transform Data Frame to get levels

我正在使用 python 3 pandas.

我的数据框如下所示:

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'])

输出:

    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

我想得到:

Name    Level    Date

Eve     A        True
        C        True
        C        True

eric    C        True
eric    D        True 
nathan  B        False

   

提前致谢

如果你有:

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'])

您可以按 Name 列对行进行排序:

df.sort_values('Name')

哪个会给你这个:

    Name    Level   Date
4   eric    C   True
0   eve     A   True
1   eve     C   True
3   eve     C   True
2   nathan  B   False

即在笔记本中:

如果你想按 Name 列中内容的频率对行进行排序,你可以这样做,依靠 & this:

sorteddf = df.assign(frequency = df.groupby('Name')['Name'].transform('count')).sort_values(by=['frequency'],ascending=False).drop('frequency',1)

给予: