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

如何去除Pandas列中字符串列表的重复元素?

解决Pandas DataFrame列表列的去重问题

嘿,我来帮你搞定这个问题!你想要去除DataFrame中dollar_sign列里每个字符串列表的重复元素,对吧?其实用Pandas的apply方法配合简单的去重逻辑就能轻松解决,下面给你具体的实现步骤:

1. 先构造示例DataFrame(方便你复现)

首先咱们先把你给出的示例数据转换成可运行的代码:

import pandas as pd

data = {
    'dollar_sign': [['btc'], ['btc'], ['btc'], ['nav'], ['btc', 'btc', 'btc']],
    'followers_count': [35946, 35946, 35946, 35946, 35946]
}
df_twitter = pd.DataFrame(data)

2. 方法一:快速去重(不介意顺序的话)

如果不需要保留原列表的元素顺序,直接用set来去重是最简洁的:

# 对每个列表转成集合去重,再转回列表
df_twitter['dollar_sign'] = df_twitter['dollar_sign'].apply(lambda x: list(set(x)))

3. 方法二:去重并保留原顺序

要是你需要保持列表里元素的原始顺序(比如原列表先出现的元素在去重后依然排在前面),可以利用Python 3.7+字典的插入有序特性,用dict.fromkeys()来实现:

# 利用字典键的唯一性去重,同时保留顺序
df_twitter['dollar_sign'] = df_twitter['dollar_sign'].apply(lambda x: list(dict.fromkeys(x)))

4. 手动遍历的正确方式(如果你想自己实现遍历)

你之前说遍历没成功,大概率是遍历的逻辑没处理到每个列表内部。手动遍历的话可以这么写:

processed_lists = []
# 遍历列中的每个列表
for lst in df_twitter['dollar_sign']:
    # 对单个列表去重(这里用保持顺序的方法)
    unique_list = list(dict.fromkeys(lst))
    processed_lists.append(unique_list)
# 替换原列
df_twitter['dollar_sign'] = processed_lists

验证结果

运行完上面的代码后,打印DataFrame就能看到效果:

print(df_twitter)

输出结果:

dollar_sign  followers_count
0        [btc]            35946
1        [btc]            35946
2        [btc]            35946
3        [nav]            35946
4        [btc]            35946

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:45:08