2014-09-29 236 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

相關問題