簡體   English   中英

計算 dataframe 中特定單詞的出現次數

[英]Counting the occurrence of specific words in a dataframe

我有一個 dataframe 的列Token包含一串單詞。 對於 dataframe 的每一行中的Token列中的字符串,我想計算某些單詞出現的次數。

輸入:

0    ['uno', 'dos', 'one', 'two', 'tres', 'quatro',...
1    ['uuh', 'sugar', 'pie', 'honey', 'bunch', 'kno...
2    ['cant', 'get', 'satisfaction', 'cant', 'get',...
3    ['woke', 'mornin', 'mind', 'mind', 'got', 'tro...

還有更多的行,但這是格式

我有一個要檢查的單詞列表

words = ["uno", "dos"]

我嘗試執行以下操作

def counter(row):
    return len([key for key, val in enumerate(row) if val in set(words)])

df.apply(lambda row: counter(['Token']), axis =1)

但是,這會導致錯誤的結果,每行都為零。

預期 output:

0   4
1   5
2   2
3   1

如何正確將此 function 應用到行的每個元素,或者其他 function 可以解決問題。

問題沒有很好的定義,在這里猜測一下:

words = ["uno", "dos"]
df = pd.DataFrame({"Token": ["A uno dos", "B dos tres", "C tres"]})

df["count"] = df.Token.apply(lambda row: len([x for x in words if x in row]))

print(df)

# Output:
        Token  count
0   A uno dos      2
1  B dos tres      1
2      C tres      0

您的主要問題似乎是您正在將['Token']傳遞給Counter function,這沒有意義,因為這樣您正在檢查words是否包含在字符串"Token"中。

使用apply lambda on 'Token' 然后使用string.count()查找字符串中單詞的出現。 需要對每個單詞都這樣做,所以使用list comprehension

words = ["uno", "dos"]
df = pd.DataFrame({"Token":["uno dos khela uno dos","ha ama kau a","aa uno"]})
df["Token_count"] = df.Token.apply(lambda x: sum([x.count(word) for word in words]))
print(df)   

                       Token      Token_count
    0  uno dos khela uno dos            4
    1           ha ama kau a            0
    2                 aa uno            1

暫無
暫無

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

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