You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pandas统计含多值的Genre列中Drama的出现次数?

解决Pandas统计多流派列中特定流派的出现次数问题

问题原因

你当前使用的df[['Year','Genre']].query("genre == 'Drama'")是精确匹配,仅当Genre列的值完全等于'Drama'时才会被筛选,因此无法匹配包含多个流派(如"Drama, Comedy")的行。

两种解决方案

方案1:统计包含目标流派的行数

如果只需要统计有多少行包含Drama(不考虑一行内流派的数量),可以用str.contains做模糊匹配:

# 筛选所有Genre列包含'Drama'的行,忽略大小写、排除空值
drama_rows = df[df['Genre'].str.contains('Drama', case=False, na=False)]
# 统计行数
row_count = len(drama_rows)
print(f"包含Drama的行数:{row_count}")
  • case=False:兼容大小写(可匹配'drama'或'Drama')
  • na=False:跳过Genre列为空的行,避免报错

方案2:统计目标流派的总出现次数

如果需要统计Drama在所有数据中的实际出现次数(比如一行有"Drama, Drama, Action"算2次),先拆分多流派再统计:

# 将每行的多流派拆分为单独行,保留Year字段
split_df = df.assign(Genre=df['Genre'].str.split(',')).explode('Genre')
# 去除流派前后的空格(CSV中常出现"Drama, Comedy"这类带空格的格式)
split_df['Genre'] = split_df['Genre'].str.strip()
# 精确匹配Drama并统计次数
drama_total = split_df[split_df['Genre'] == 'Drama'].shape[0]
print(f"Drama的总出现次数:{drama_total}")

这个方法能处理流派间的空格问题,统计结果更精准,适合需要统计单个流派总提及次数的场景。

内容的提问来源于stack exchange,提问作者johnha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 15:54:54