2014-07-11 30 views
0

我有一列包含相當長的字符串。每個字符串可能包含也可能不包含子標記。 'H 07','H 06'或'F 13'這樣的子串可能會出現在數據幀單元格中,也可能不會出現在數據幀單元格中。我想計算這些子字符串的外觀並將結果添加到新單元格中。 的原始細胞值計算單元格中多個子字符串的出現大熊貓

df.iloc[0,0]  
'rfgergerggr H 07 jgjg gjgj H 06 gjhgj H 06 '. 

程序的結果應該是一個新的細胞與

df.iloc[0,1] 
{'H 07':1, 'H 06':2} 

我想,這應該與str.contains的幫助下完成的。但我正在尋找大約50個不同的子串,我無法想象找到它們的好方法。 另外,我認爲複雜的lambda可以在這裏解決我的問題。但不知道如何建立它。

到目前爲止我已經嘗試了str.contains,但它只顯示如果子字符串在那裏,我沒有得到計數。另外,要找到我感興趣的所有50個子字符串,我將不得不每次都調用str.contains。我認爲應該有更好的方式來做到這一點。

+0

acushner,在最後一次編輯 – Aidis

+0

只需使用一個'apply'與創建一個基於字符串的'str.count'字典的功能 – acushner

回答

1

類似:

substrs = [...] 
def f(cell_value): 
    return {k: v for k, v in ((s, cell_value.count(s)) for s in substrs) if v} 
df.column.apply(f)