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

Python中如何拆分DataFrame字段并按年份统计各产品的出现数量

解决方案

使用pandas的explode方法配合字段拆分即可实现需求,完整可运行代码如下:

import pandas as pd

# 你实际使用时把下面这段替换成读取csv的代码:df = pd.read_csv("你的文件路径.csv")
df = pd.DataFrame({
    'Event_Year': [2015,2015,2015,2016,2016,2017,2017,2017],
    'Product name': ['Cola', 'Pepsi, Cola', 'Fanta, Pepsi', 'Cola', 'Sprite, Cola', 'Cola, Fanta, Sprite', 'Sprite,Cola', 'Cola']
})

# 1. 按逗号拆分产品列,自动忽略逗号前后的空格,再展开为单行单个产品的结构
df['Product name'] = df['Product name'].str.split(',\s*')
df_exploded = df.explode('Product name', ignore_index=True)

# 2. 按年份+产品分组统计出现次数
result = df_exploded.groupby(['Event_Year', 'Product name'], as_index=False).size()
result = result.rename(columns={'size': 'Product count'})

# 如只需2017年的结果,新增过滤逻辑即可
result_2017 = result[result['Event_Year'] == 2017]
print(result_2017)

运行后输出结果和你预期完全一致:

Event_YearProduct nameProduct count
2017Cola3
2017Fanta1
2017Sprite2

关键逻辑说明

  • str.split(',\s*'):用正则匹配逗号加任意数量空格作为分隔符,兼容你数据里逗号后有时有空格有时无的情况,避免拆分出带冗余空格的产品名
  • explode:把列表形式的多产品列拆成多行,每个产品单独占一行,后续直接分组统计即可
  • groupby(..).size():按年份、产品两个字段分组统计每组行数,即对应产品的出现次数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 08:36:02