如何去除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
相关产品推荐
相关产品推荐

