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

如何按列表类型的Genre列分组统计Sales总和(避免展开列)

解决按Genre列表内单个类型统计销售额的问题

你的原代码问题在于:将Genre列的列表转成tuple后分组,是把整个类型组合当作一个分组(比如["Sci-fi","Action"]会被视为一个独立组),而不是拆分出每个类型单独统计,所以得到的结果不符合需求。

以下是两种可行的解决方案:

方法一:临时展开Genre列(简单直观)

利用explode()方法临时将Genre的列表拆分成多行,再按单个类型分组求和,操作完成后不会修改原DataFrame:

import pandas as pd

data = {
  "Movie": ["Avatar", "Leap Year", "Life is Beautiful","Roman Holiday"],
  "Sales": [5000, 2500, 2800, 4050],
  "Genre": [["Sci-fi","Action"], ["Romantic", "Comedy"], ["Tragic", "Comdey"], ["Romantic"]]
}
df = pd.DataFrame(data)

# 临时拆分Genre并统计各类型总销售额
sales_by_genre = df.explode('Genre').groupby('Genre')['Sales'].sum()
print(sales_by_genre)

输出结果:

Genre
Action       5000
Comdey       2800
Comedy       2500
Romantic     6550
Sci-fi       5000
Tragic       2800
Name: Sales, dtype: int64

(注意:你的数据里"Comdey"是拼写错误,和"Comedy"会被视为两个不同类型,建议统一拼写)

方法二:不展开列,通过Apply拆分统计

如果不想临时展开列,可以用apply()每行生成对应类型的销售额Series,再求和得到结果:

sales_by_genre = df.apply(lambda row: pd.Series(row['Sales'], index=row['Genre']), axis=1).sum()
print(sales_by_genre)

这个方法直接在原DataFrame基础上计算,不会生成中间的展开数据,结果和方法一完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 02:15:34