如何计算 Pandas 列中某个单词的实例数?

How to count the number of instances of a word in a Pandas column?

我有一个 Pandas 数据框,其中包含分级电影的类型。一些电影属于多个流派,每个流派由“|”分隔。您可以在下面的代码中看到这方面的示例。


import pandas as pd
unames = ['user_id', 'gender', 'age', 'occupation', 'zip']
users = pd.read_table('ml-1m/users.dat', sep='::', header=None, names=unames, engine='python')

rnames = ['user_id', 'movie_id', 'rating', 'timestamp']
ratings = pd.read_table('ml-1m/ratings.dat', sep='::', header=None, names=rnames, engine='python')

mnames = ['movie_id', 'title', 'genres']
movies = pd.read_table('ml-1m/movies.dat', sep='::', header=None, names=mnames, engine='python')

df = pd.merge(pd.merge(ratings, users), movies)
df["genres"].value_counts()

如您所见,value_counts() 方法并不是计算每个独特类型被评分次数的有效方法。 是否有 pandas 方法可以让我计算每个独特类型“单词”出现的次数,或者我是否需要使用一些循环来分离所有组合类型?

您可以使用正则表达式 r'\s*\|\s*' 甚至 *[|] * 来拆分您的流派列,然后分解该列并进行计数。请注意,\s 代表 space。由于 | 是一个元字符,您需要通过后退 space 或将其放在字符 class 中进行转义,即 []

df['genre'].str.split(' *[|] *').explode().value_counts()

Drama                                      4
Comedy                                     3
Romance                                    3
Western                                    1
Children's                                 1