Python计算数据帧列中的字符串(字)

时间:2017-02-28 10:09:48

标签: python pandas

我有以下数据框(df_hvl),其列名为" FzListe"以及以下数据:

FzListe
7MA1, 7OS1
7MA1, 7ZJB
7MA2, 7MA3, 7OS1
76G1, 7MA1, 7OS1
7MA1, 7OS1
71E5, 71E6, 7MA1, FSS1
71E4, 7MA1, 7MB1, 7OS1
71E6, 7MA1, 7OS1
7MA1
7MA1, 7MB1, 7OS1
7MA1
7MA1, 7MA2, 7OS1
04, 7MA1
76G1, 7MA1, 7OS1
76G1, 7MA1, 7OS1
7MA1, 7OS1
7MA1
76G1, 7MA1, 7OS1
76G1, 7MA1, 7OS1
71E6, 7MA1
7MA1, 7MA2, 7OS1
7MA1
7MA1
7MA1
7MA1, 7OS1
76G1, 7MA1

我想搜索字符串" 7MA"只计算它在列表中出现的频率。 (该列表最初比该片段长得多)。我不想只搜索7MA1,因为它可能在一行中出现7MA2和/或7MA3等等......

Dataframe名为df_hvl,我搜索了一个解决方案,但没找到。

感谢您的帮助

3 个答案:

答案 0 :(得分:4)

我认为sum需要str.count

print (df_hvl.FzListe.str.count(substr))
0     1
1     1
2     2
3     1
4     1
5     1
6     1
7     1
8     1
9     1
10    1
11    2
12    1
13    1
14    1
15    1
16    1
17    1
18    1
19    1
20    2
21    1
22    1
23    1
24    1
25    1
Name: FzListe, dtype: int64

substr = '7MA'
print (df_hvl.FzListe.str.count(substr).sum())
29

答案 1 :(得分:0)

我会尝试这样的事情,我想

b=0
for index in df.index:
    A=df.loc[row,'FzList'].split(',')
    for element in A:
        if '7MA'in element: 
            b+=1
return b 

答案 2 :(得分:0)

这很可能会起作用

df_hvl.FzListe.map(lambda d: "7MA" in d).sum()