2014-09-29 177 views
1

比方说,我有一个数据帧像这样:如何计算Dataframe字段中字符串的出现次数?

0       Physician (Family Practice) 99 
1     Transportation Security Officer (TSO) 94 
2         Physical Therapist 94 
3        Physician (Psychiatrist) 81 

我要计数/组数据帧,使得所有与它(部分匹配)的“医生”字的行会加在一起,所以我得到如下:

0            Physician 180 
1     Transportation Security Officer (TSO) 94 
2         Physical Therapist 94 

回答

1

这里是(假设列被命名为“工作”和“民”)的一种方法:

>>> d.groupby(d.Job.map(lambda x: 'Physician' if 'Physician' in x else x)).sum() 
             Num 
Job          
Physical Therapist      94 
Physician        180 
Transportation Security Officer (TSO) 94 

的想法是GROUPBY标记物如果字符串包含“Physician”,则设置为“Physician”,否则设置为原始值。你可以把它扩展到更多的部分匹配。但是,如果您想要以这种方式折叠很多值,那么添加包含广泛类别的另一列(例如“医师”)并对其进行分组可能会更具可读性。

+0

在您对我的解决方案发表评论后,您的解决方案具有(较小的)副作用,即相似的列值也会被分组。 – Korem 2014-09-29 19:29:13

+0

@Korem:“相似的列值”是什么意思? – BrenBarn 2014-09-29 19:32:18

+0

我大概是指行值。如果他有两个“物理治疗师”排,他们将被总结,尽管OP要求只与“医师”排成一行。也许你应该返回一个序列号而不是x。 – Korem 2014-09-29 19:34:34

相关问题