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

如何快速提取数组中冒号组合的唯一基础元素?Python有无内置方法?

拆分组合元素提取唯一基础项的解决方案

问题描述

给定一个来自DataFrame某一列的唯一值NumPy数组:

import numpy as np
input_array = np.array([np.nan, 'Stressful day', 'Drank coffee:Drank tea', 'Drank tea',
       'Ate late:Drank coffee', 'Drank coffee:Drank tea:Worked out',
       'Drank tea:Worked out', 'Drank coffee:Drank tea:Stressful day',
       'Drank coffee', 'Drank coffee:Drank tea:Stressful day:Worked out',
       'Drank coffee:Worked out', 'Ate late:Drank coffee:Drank tea',
       'Ate late:Drank coffee:Drank tea:Worked out',
       'Drank tea:Stressful day', 'Drank tea:Stressful day:Worked out',
       'Drank coffee:Stressful day:Worked out',
       'Drank coffee:Stressful day',
       'Ate late:Drank coffee:Drank tea:Stressful day', 'Worked out',
       'Ate late:Drank coffee:Worked out'], dtype=object)

数组中存在以冒号:拼接的组合元素(例如'Drank coffee:Drank tea'是两个基础元素的组合),需要提取所有唯一的基础元素,预期输出为:

array([nan, 'Stressful day', 'Drank coffee', 'Drank tea', 'Ate late',
       'Worked out'], dtype=object)

解决方案

内置函数说明

Python标准库、NumPy或Pandas中没有直接处理这类需求的内置函数,但可以通过字符串拆分、去重结合数组/数据框操作快速实现,其中向量化操作是效率最高的方案。

最快实现方式

方式1:NumPy直接操作数组

适合直接处理NumPy数组的场景,利用批量拆分和去重:

import numpy as np

# 过滤NaN,拆分所有非NaN元素
non_nan_vals = input_array[~np.isnan(input_array)]
split_elements = np.concatenate([val.split(':') for val in non_nan_vals])

# 提取唯一基础元素,补回原始NaN
unique_bases = np.unique(split_elements)
result = np.append(np.array([np.nan]), unique_bases).astype(object)

print(result)

方式2:Pandas链式操作(原数据来自DataFrame时更便捷)

如果原始数据是DataFrame的列,用Pandas的字符串拆分+展开+去重,代码更简洁:

import pandas as pd
import numpy as np

# 假设原DataFrame为df,目标列为'col'
df = pd.DataFrame({'col': input_array})
# 拆分、展开后提取唯一值
unique_bases = df['col'].str.split(':', expand=True).stack().unique()
# 补回NaN并转换类型
result = np.append(np.array([np.nan]), unique_bases).astype(object)

print(result)

效率对比

两种方法都采用批量/向量化操作,避免了低效的循环遍历,在大规模数据下性能表现优异。其中Pandas的写法更简洁直观,适合DataFrame场景;NumPy的方式则更直接,适合纯数组操作场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 04:17:08