如何计算 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
我有一个 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