显示特定学生以各自价格购买的水果

时间:2018-12-23 12:08:01

标签: python pandas dataframe pandas-groupby

有不同的名字买了不同的水果。我需要人名和他以显示的价格购买的不同水果

这是示例输入

NAME    FRUIT     PRICE
akshay  apple       10
ashish  orange      20
vaibhav pinapple    30
nagesh  guava       10
akshay  guava       10
akshay  pinapple    30
ashish  pinapple    30
vaibhav apple       10
nagesh  guava       10

该人购买了不同的水果,我需要在不重复该人姓名的情况下展示它

样本输出

NAME    FRUIT    PRICE
akshay  apple    10
        guava    10
        pinapple 30
ashish  orange   20
        pinapple 30
vaibhav pinapple 30
        apple    10
nagesh  guava    10

水果必须按名称分组

1 个答案:

答案 0 :(得分:1)

您可以在两列中同时使用sort_values,并将重复的值替换为空字符串,请添加mask + duplicated

df = df.sort_values(['NAME','FRUIT']).reset_index(drop=True)
df['NAME'] = df['NAME'].mask(df['NAME'].duplicated(), '')
print (df)
      NAME     FRUIT  PRICE
0   akshay     apple     10
1              guava     10
2           pinapple     30
3   ashish    orange     20
4           pinapple     30
5   nagesh     guava     10
6              guava     10
7  vaibhav     apple     10
8           pinapple     30

另一种可能的显示方式是通过set_index + sort_index创建MutliIndex

df = df.set_index(['NAME','FRUIT']).sort_index()
print (df)
                  PRICE
NAME    FRUIT          
akshay  apple        10
        guava        10
        pinapple     30
ashish  orange       20
        pinapple     30
nagesh  guava        10
        guava        10
vaibhav apple        10
        pinapple     30