[英]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.