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

Pandas技术问题:计算DataFrame中逗号分隔标签的对应收入总和

解决方法:用Pandas高效拆分标签并求和

我来帮你搞定这个问题!其实你已经走了一半啦,不用手动遍历这么麻烦,Pandas有更简洁高效的方法直接实现你的需求——把每个逗号分隔的标签和对应的Revenue关联,再分组求和就行。

步骤1:拆分标签并展开行

首先我们把Tag列的逗号分隔字符串拆成列表,再用explode方法把列表里的每个标签单独拆成一行,同时保留对应的Revenue值(这样每个标签都会对应它所在行的Revenue):

# 拆分Tag列并展开,每个标签对应原行的Revenue
tag_revenue = revcat.assign(Tag=revcat['Tag'].str.split(',')).explode('Tag')

这一步之后,你的DataFrame会变成这样:

TagRevenue
a0
b0
c0
d0
a10
b10
c10
d10
......

步骤2:按标签分组求和

接下来只需要按Tag分组,对Revenue列求和就得到每个标签的总Revenue了:

# 按Tag分组,计算Revenue总和
tag_total = tag_revenue.groupby('Tag')['Revenue'].sum().reset_index()

完整示例代码

用你给出的测试数据跑一遍,完整代码如下:

import pandas as pd

# 你的示例数据
data = {
    'Tag': ['a,b,c,d', 'a,b,c,d', 'a,b,d,e', 'a,b,d,e'],
    'Revenue': [0, 10, 89, 111]
}
revcat = pd.DataFrame(data)

# 拆分标签并展开
tag_revenue = revcat.assign(Tag=revcat['Tag'].str.split(',')).explode('Tag')

# 分组求和
tag_total = tag_revenue.groupby('Tag')['Revenue'].sum().reset_index()

print(tag_total)

运行后输出的结果完全符合你的预期:

Tag  Revenue
0   a      220
1   b      220
2   c       10
3   d      220
4   e      210

为什么不用你之前的唯一标签列表?

你之前提取的uniqtag其实没必要单独处理,上面的方法直接把标签拆分展开后分组,一步到位,既简洁又高效,还避免了手动遍历的繁琐。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:51:01