我在迭代 pandas 數(shù)據(jù)框中的行時遇到問題。我需要為每一行(包含字符串)確定以下內(nèi)容:字符串中每個標(biāo)點符號的計數(shù);大寫字母的數(shù)量。為了回答第一點,我對字符串進行了如下嘗試,以查看該方法是否也適用于數(shù)據(jù)框:from nltk.corpus import stopwords from nltk.tokenize import word_tokenize t= "Have a non-programming question?"t_low = search.lower() stop_words = set(stopwords.words('english')) word_tokens = word_tokenize(t_low) m = [w for w in word_tokens if not w in stop_words] m = [] for w in word_tokens: if w not in stop_words: m.append(w) 然后,在標(biāo)記化后對它們進行計數(shù):import stringfrom collections import Counterc = Counter(word_tokens) for x in string.punctuation: print(p , c[x]) 對于第二點,我將以下內(nèi)容應(yīng)用于該句子: sum(1 for c in t if c.isupper()))然而,這種情況只能應(yīng)用于字符串。因為我有一個如下所示的 pandas 數(shù)據(jù)框:Text"Have a non-programming question?"More helpful LINK!Show SOME CODE... and so on...我想知道如何應(yīng)用上述代碼才能獲得相同的信息。任何幫助都會很棒。謝謝
1 回答

米琪卡哇伊
TA貢獻1998條經(jīng)驗 獲得超6個贊
您可以在 DF 上使用 lambda 函數(shù)來執(zhí)行此操作:
import string
def Capitals(strng):
return sum(1 for c in strng if c.isupper())
def Punctuation(strng):
return sum([1 for c in strng if c in string.punctuation])
df['Caps'] = df['name'].apply(lambda x:Capitals(x))
df['Punc'] = df['name'].apply(lambda x:Punctuation(x))
Caps 是一個包含大寫字母數(shù)量的新列。Punc 是一個包含標(biāo)點符號數(shù)量的新列。名稱是測試的字符串。
添加回答
舉報
0/150
提交
取消