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

Pandas单元格内重复元素去除及元素数量统计方法

如何在Pandas中去除单元格内重复元素并统计数量?

问题场景

你手里有这样一个原始DataFrame:

import pandas as pd

df = pd.DataFrame({
    'Destinations': [
        'Paris,Oslo, Paris,Milan, Athens,Amsterdam',
        'Boston,New York, Boston,London, Paris,New York',
        'Nice,Paris, Milan,Paris, Nice,Milan'
    ]
})

想要实现两个目标:一是去掉城市名称前后的空格、删除重复的城市,二是统计每个单元格内去重后的城市数量,最终得到这样的结果:

Destinations_2no_destinations
Paris,Oslo,Milan,Athens,Amsterdam5
Boston,New York,London,Paris4
Nice,Paris,Milan3

解决方案

我来一步步带你实现这个需求:

  1. 处理单元格字符串:去空格、去重并保留原始出现顺序
    首先要把每个单元格的字符串按逗号拆分,去掉每个城市名前后的空格,然后删除重复项。这里用sorted配合key参数,是为了避免set去重后打乱城市第一次出现的顺序:

    df['Destinations_2'] = df['Destinations'].apply(
        lambda x: ','.join(
            sorted(
                set(city.strip() for city in x.split(',')),
                key=lambda city: x.split(',').index(city.strip())
            )
        )
    )
    
  2. 统计去重后的城市数量
    对处理好的Destinations_2列,按逗号拆分后统计列表长度,就能得到每个单元格的城市数量:

    df['no_destinations'] = df['Destinations_2'].apply(lambda x: len(x.split(',')))
    
  3. 可选:清理原始列
    如果不需要保留原始的Destinations列,可以直接删除它:

    df = df.drop('Destinations', axis=1)
    

最终结果

运行完上述代码后,你就能得到想要的DataFrame了:

Destinations_2  no_destinations
0  Paris,Oslo,Milan,Athens,Amsterdam                5
1    Boston,New York,London,Paris                4
2             Nice,Paris,Milan                3

内容的提问来源于stack exchange,提问作者Dogukan Yılmaz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:31:28