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

如何从列元素序列获取唯一值及按前缀统计Ticket_No列值计数

Pandas 实用问题解答

嘿,这两个Pandas的问题我来给你拆解清楚!

问题1:如何从DataFrame某一列的元素序列中获取唯一值?

有几种常用方法,你可以根据需求选:

  • 用unique()方法:直接返回该列的唯一值数组(numpy.ndarray类型),顺序是元素第一次出现的顺序。举个例子:

    import pandas as pd
    df = pd.DataFrame({'col': ['a', 'b', 'a', 'c', 'b']})
    unique_vals = df['col'].unique()
    # 输出:array(['a', 'b', 'c'], dtype=object)
    
  • 用drop_duplicates()方法:返回一个去掉重复值的Pandas Series,保留原有的索引结构,后续做Pandas操作更方便:

    unique_series = df['col'].drop_duplicates()
    # 输出:
    # 0    a
    # 1    b
    # 3    c
    # Name: col, dtype: object
    
  • 如果只是想统计唯一值的数量,直接用nunique():

    unique_count = df['col'].nunique()
    # 输出:3
    

问题2:按Ticket_No的前缀统计数量

你提到的groupby().size()是核心操作,但需要先把每个Ticket_No的前缀提取出来再分组。这里分两种场景处理:

场景1:前缀是固定长度(比如你的例子里都是前3个字符)

直接截取字符串的前3位,然后分组统计就行:

# 假设你的DataFrame叫df
prefix_counts = df.groupby(df['Ticket_No'].str[:3]).size()

# 或者先建一个前缀列,逻辑更直观
df['Prefix'] = df['Ticket_No'].str[:3]
prefix_counts = df.groupby('Prefix').size()

运行后就能得到你要的结果:

Prefix
ABC    3
IJK    2
XYZ    2
dtype: int64

场景2:前缀长度不固定(比如有的是2个字母,有的是3个,后面跟数字)

这种情况用正则提取字母部分更靠谱,用str.extract()提取所有连续字母:

df['Prefix'] = df['Ticket_No'].str.extract(r'([A-Za-z]+)')
prefix_counts = df.groupby('Prefix').size()

这个方法能适配更多格式的Ticket_No,比如像'AB123'、'ABCD45'这类前缀长度不同的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:18:40