[英]Count occurences of word within a list in a dataframe column
有一個包含文本和單詞列表的數據框列。 我想要:
#干凈的
#創建另一個數據框,顯示列表中包含的這些單詞的出現次數,如下所示:
df = pd.DataFrame([["word1 word,! word3 word4* word split5^", "other data"], ["word2 word,* word3 word4 word5", "other data"]], columns=['Description1', 'other colum'])
lista = ['word1', 'word2','word3','word4','word split5']
#Wanted result
df2 = pd.DataFrame([["word1", "1"], ["word2", "1"], ["word3", "2"], ["word4", "2"], ["word split5", "1"]], columns=['Listed words', 'occurences'])
我有一個代碼可以滿足你的要求
import pandas as pd
df = pd.DataFrame([["word1 word,! word3 word4* word split5^", "other data"],
["word2 word,* word3 word4 word5", "other data"]],
columns=['Description1', 'other colum'])
# in the word list, split in words based on space
# for each word, strip of special characters and lower
# save list of all processed occurences to res
res = []
for i, elem in enumerate(df["Description1"].to_list()):
res.extend([''.join(filter(str.isalnum, e)).lower() for e in elem.split(sep=" ")])
# import Counter, the easiest solution to count elements
from collections import Counter
# make a new df
df2 = pd.DataFrame()
df2 = df2.assign(ListedWords=Counter(res).keys(), # list each unique elements
Occurences=Counter(res).values()) # list occurences
df2
輸出:
Out[66]:
ListedWords Occurences
0 word1 1
1 word 3
2 word3 2
3 word4 2
4 split5 1
5 word2 1
6 word5 1
因此,代碼根據空格拆分單詞,刪除特殊字符並按照您的要求小寫單詞(按此順序)。
我有兩個評論:我使用Counter
(內置)模塊,因為這是計算列表中單詞的最簡單方法。 此外,我的輸出看起來與示例中的輸出不同,因為如果您根據空格進行拆分,則"word split5"
將不會出現在您的輸出中。 word,!
一樣, word,!
:使用您的標准,這將作為word
存儲在最終的 df 中,因為它是一個單獨的單詞(用空格表示),但特殊字符被刪除。
另請注意,由於 python dicts
是無序的,因此列的順序不同。 您可以使用df2.sort_values(by = ["ListedWords"])
對數據df2.sort_values(by = ["ListedWords"])
的值進行排序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.