pandas:groupby时如何隐去非数字列?(第二问)

数据是这样的:

import pandas as pd

data_file = 'team.xlsx'
df = pd.read_excel(data_file)
print(df.head())

'''
    name team  Q1  Q2  Q3  Q4
0  Liver    E  89  21  24  64
1   Arry    C  36  37  37  57
2    Ack    A  57  60  18  84
3  Eorge    C  93  96  71  78
4    Oah    D  65  49  61  86
'''

然后我写里两行代码,按照team 和 name首字母为 元音\辅音 来分类聚合,发现每次name都会print出来:

def get_letter_type(letter):
    if letter[0].lower() in 'aoeiu':
        return '元音'
    else:
        return '辅音'


d = df.groupby(['team',df.name.apply(get_letter_type)]).sum()
print(d)

'''
                                                        name   Q1  ...   Q3   Q4
team name                                                          ...          
A    元音                                  AckOscarArthurAaron  274  ...  141  199
     辅音    LfieJoshuaHenryLucasReggie1TobyDylanHugo0Caleb...  792  ...  734  584
B    元音                       AcobEdwardElijahElliottAlbert0  309  ...  269  218
     辅音    LeoLoganThomasHarrisonSamuelHarleyJensonFranki...  666  ...  933  918
C    元音    ArryEorgeArchieAlexanderAdamOllie3ElliotEllisA...  473  ...  453  464
     辅音    HarlieTheoWilliamDanielSebastianTommyJake3Matt...  583  ...  615  663
D    元音                          OahEthanAlbie1AlexEzraAiden  273  ...  409  486
     辅音    ReddieMasonFinleyBenjaminLouieCarter7Bobby1Luc...  587  ...  832  713
E    元音                                        IsaacArlo8Eli  133  ...  138  207
     辅音    LiverJamesMaxTeddyRileyJosephJaxonJudeRory9Zac...  830  ...  743  826
'''

我不想要这个name,想了很多办法,都不好使,最后只能用笨办法:

d3 和d4得到相同的结果,但我感觉还是很麻烦,

求高手指点,有没有更好的办法,不要显示name出来?


d3 = df.filter(items=['team','Q1','Q2','Q3','Q4']).groupby(['team',df.name.apply(get_letter_type)]).sum()
print(d3)


d4 = df.iloc[:,1:].groupby(['team',df.name.apply(get_letter_type)]).sum()
print(d4)

'''
team name                    
A    元音    274  197  141  199
     辅音    792  442  734  584
B    元音    309  291  269  218
     辅音    666  927  933  918
C    元音    473  488  453  464
     辅音    583  706  615  663
D    元音    273  333  409  486
     辅音    587  858  832  713
E    元音    133  131  138  207
     辅音    830  882  743  826

'''

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值