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

如何使用Pandas按特殊字符拆分列值并执行分组统计?

实现按特殊字符拆分列后分组统计的Pandas方案

没问题,我来帮你搞定这个需求!你现在需要把Messages列里用分号分隔的内容拆成单独条目,再按Owner和每个拆分后的消息统计出现次数,对吧?下面是具体的实现步骤和代码:

步骤1:模拟原始数据

先还原你的原始DataFrame,方便后续演示:

import pandas as pd

data = {
    'Owner': ['AAA', 'AAA', 'AAA', 'BBB', 'BBB'],
    'Messages': [
        '(YY) Duplicates',
        'Missing Number; (VV) Corrected Value; (YY) Duplicates',
        '(YY) Duplicates',
        '(YY) Duplicates',
        'Missing Measure; Missing Number'
    ]
}
df = pd.DataFrame(data)

步骤2:拆分并展开Messages列

我们用str.split(';')把每个单元格的内容按分号拆成列表,再用explode()把列表里的每个元素拆成单独的行,同时用str.strip()去掉每个消息前后的空格(避免因为空格导致分组错误):

# 拆分+展开+清理空格
df_split = df.assign(Messages=df['Messages'].str.split(';')).explode('Messages')
df_split['Messages'] = df_split['Messages'].str.strip()

这一步处理后,df_split的结构会变成这样:

OwnerMessages
AAA(YY) Duplicates
AAAMissing Number
AAA(VV) Corrected Value
AAA(YY) Duplicates
AAA(YY) Duplicates
BBB(YY) Duplicates
BBBMissing Measure
BBBMissing Number

步骤3:分组统计数量

现在就可以像你原来的思路一样,按Owner和拆分后的Messages分组统计了:

df_grouped = df_split.groupby(['Owner', 'Messages']).size().reset_index(name='count')

最终得到的结果会是:

OwnerMessagescount
AAA(VV) Corrected Value1
AAA(YY) Duplicates3
AAAMissing Number1
BBB(YY) Duplicates1
BBBMissing Measure1
BBBMissing Number1

关键说明

  • explode()是Pandas 0.25+版本支持的方法,如果你用的是旧版本,可以用apply(pd.Series).stack()来替代,但explode()更简洁高效。
  • 一定要加str.strip(),不然像' Missing Number'和'Missing Number'会被当成不同的分组,统计结果就错了。

内容的提问来源于stack exchange,提问作者i.n.n.m

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:05:41