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

如何用Pandas去除列中重复元素组合并汇总Frequency

解决方案

针对你的需求,这里用Python的pandas库给出高效处理方案,步骤清晰适合新手:

核心思路

drop_duplicates只能识别完全相同的字符串,而你需要忽略元素顺序、按组合去重。所以先把每个Purpose的元素排序后生成统一的"标准键",再按这个键分组求和,最后排序即可。

完整代码

import pandas as pd

# 1. 加载数据集(如果是CSV文件,替换成pd.read_csv('你的文件路径.csv'))
# 下面是示例数据,供你测试用
data = {
    'Purpose': [
        'Bathe, Eat, Sleep',
        'Sleep, Eat, Bathe',
        'Talk, Eat, Sleep, Movie',
        'Sleep, Talk, Movie, Eat',
        'Sleep, Eat, Talk, Movie'
    ],
    'Frequency': [5, 4, 10, 8, 2]
}
df = pd.DataFrame(data)

# 2. 定义标准化函数:把Purpose的元素排序,生成统一格式的字符串
def normalize_purpose(purpose_str):
    # 分割字符串、去除元素前后空格、排序、重新拼接
    items = [item.strip() for item in purpose_str.split(',')]
    sorted_items = sorted(items)
    return ', '.join(sorted_items)

# 3. 添加标准化后的列,作为分组依据
df['normalized_purpose'] = df['Purpose'].apply(normalize_purpose)

# 4. 按标准化列分组,求和Frequency,保留一组原始Purpose
grouped_df = df.groupby('normalized_purpose').agg(
    Frequency=('Frequency', 'sum'),
    Purpose=('Purpose', 'first')  # 取每组第一个原始Purpose,也可以换成排序后的字符串
).reset_index(drop=True)

# 5. 按Frequency降序排列,调整列顺序
result_df = grouped_df.sort_values('Frequency', ascending=False).reset_index(drop=True)
result_df = result_df[['Purpose', 'Frequency']]

# 查看最终结果
print(result_df)

代码说明

  • 标准化函数:确保相同元素组合的Purpose生成完全一致的字符串,解决了顺序不同导致的"伪重复"问题。
  • 分组求和:pandas的groupby针对1万+行数据效率很高,不会有性能瓶颈。
  • 排序输出:最后按求和后的频率降序排列,完全匹配你的需求。

输出结果

运行后会得到和你示例一致的表格:

PurposeFrequency
Sleep, Talk, Movie, Eat20
Bathe, Eat, Sleep9

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 22:25:25