首页 > 解决方案 > 在数据框中查找字符串的计数(由分隔符分隔)?

问题描述

我有这个数据框。

df

   userId  movieId  rating                genres
0      41    97921    4.0          Comedy|Drama|Sci-Fi
1      47    97921    3.5          Comedy|Drama|Sci-Fi
2     594    539      5.0          Comedy|Drama|Romance|Adventure
3       4    539      5.0          Comedy|Drama|Romance|Adventure
4     113    1733     4.0          Drama|Romance
5     594    1733     5.0          Drama|Romance

我也有所有流派的列表:

genres = ['Comedy','Drama','Romance','Action','Adventure','Sci-Fi','Thriller','Crime',\
          'Animation','Children','Musical','Film-Noir','Fantasy','War','Mystery','IMAX',\
             'Horror','Western','Documentary' ]

我想计算数据框中的每种类型。

Expected Output:
Comedy :4
Drama :6
Sci-Fi: 2
Romance: 2
Adventure: 2

标签: python-3.xpandassplitcount

解决方案


您可以使用:

df['genres'].str.split('|').explode().value_counts().to_dict() #requires pandas 0.25+

#{'Drama': 6, 'Comedy': 4, 'Romance': 4, 'Sci-Fi': 2, 'Adventure': 2}

或者:

df['genres'].str.get_dummies().sum().to_dict()
#{'Adventure': 2, 'Comedy': 4, 'Drama': 6, 'Romance': 4, 'Sci-Fi': 2}

推荐阅读