情感分析中的一个常见任务是获取 Pandas 数据帧单元格内单词的计数,并基于该计数创建新列。我该如何做到这一点?
df['new_column'] = df['count_column'].str.count(' ') + 1
这种解决方案可能更快,因为它不会将每个字符串拆分成列表。
如果count_column
包含空字符串,则需要调整结果(见下面的注释):
df['new_column'] = np.where(df['count_column'] == '', 0, df['new_column'])
df = pandas.read_csv('dataset.csv')
然后进行以下操作:
df['new_column'] = df.columnToCount.apply(lambda x: len(str(x).split(' ')))
记住split中的空格很重要,因为你是在新单词上分割。在执行此操作之前,您可能需要删除标点符号或数字并将其转换为小写。
df = df.apply(lambda x: x.astype(str).str.lower())
df = df.replace('\d+', '', regex = True)
df = df.replace('[^\w\s\+]', '', regex = True)
针对数据框 df,从所选列中删除标点符号:
string_text = df['reviews'].str
df['reviews'] = string_text.translate(str.maketrans('', '', string.punctuation))
获取字数:
df['review_word_count'] = df['reviews'].apply(word_tokenize).tolist()
df['review_word_count'] = df['review_word_count'].apply(len)
使用新列写入CSV:
df.to_csv('./data/dataset.csv')
from collections import Counter
df['new_column'] = df['count_column'].apply(lambda x: Counter(" ".join(x).split(" ")).items())
count_column
中的每个文本单元格拆分为单词列表。(如果count_column
中的每个单元格都包含一个字符串,则计算字符数。)另外,如果我漏掉了什么显而易见的东西,对不起。但是为什么要使用Counter(' '.join(x).split(' '))
?Counter(x)
不能达到相同的结果吗?编辑:连接然后拆分的一个原因是确保您分解列表中包含多个以空格分隔的单词的任何字符串。 - Peter Leimbigler' '.join(a_string_variable)
会在字符串中的每个字符之间插入一个空格。 - Peter Leimbigler
split(' ')
shows exactly the same result:[len(c.split(' ')) for c in ['', 'car']] == [c.count(' ')+1 for c in ['', 'car']]
- altabq