簡體   English   中英

數據幀列中的 Python 計數字符串(字)

[英]Python count string (word) in column of a dataframe

我有以下數據框(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,我搜索了一個解決方案,但沒有找到。

我認為你需要str.countsum

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

我想嘗試這樣的事情

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 

這很可能會起作用

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

您需要使用Series.str.count接受正則表達式模式作為第一個參數,以及一個可選的第二個參數接受可以修改匹配行為的正則表達式標志

import re
df_hvl['FzListe'].str.count(re.escape(substr))
## enabling case insensitive match:
df_hvl['FzListe'].str.count(re.escape(substr), re.I)

如果substr包含特殊的正則表達式元字符,您需要使用re.escape作為Series.str.count將失敗。

相關帖子

如果您需要匹配整個單詞...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM