如何在Pandas DataFrame单元格中去除重复内容?
问题:去除DataFrame单元格内的重复字符串内容
我有一个包含大量数据的DataFrame,需要去除每个单元格中的重复内容。例如,单元格字符串中多次出现interacción_con la plataforma,希望仅保留一个。我已尝试以下代码:
df_invertido['Eventos ultimos 100'] = df_invertido['Eventos ultimos 100'].str.split(r',\s+').map(set).str.join(", ")
解决方案
你的代码用set去重会打乱元素的原始顺序,如果需要保留内容第一次出现的顺序,可以改用以下方法:
方法1:自定义函数处理(兼容缺失值)
import pandas as pd def remove_duplicates(text): if pd.isna(text): return text items = text.split(r',\s+') seen = set() unique_items = [] for item in items: if item not in seen: seen.add(item) unique_items.append(item) return ", ".join(unique_items) df_invertido['Eventos ultimos 100'] = df_invertido['Eventos ultimos 100'].apply(remove_duplicates)
这个方法遍历分割后的每个元素,用集合记录已出现的内容,只保留第一次出现的元素,拼接后既完成去重,又维持了原始顺序,同时能处理单元格为空的情况。
方法2:简化lambda表达式(无缺失值场景)
如果确认数据中没有缺失值,可以用更简洁的写法:
df_invertido['Eventos ultimos 100'] = df_invertido['Eventos ultimos 100'].str.split(r',\s+').apply( lambda x: ", ".join(list(dict.fromkeys(x))) )
dict.fromkeys(x)会按元素出现顺序生成无重复的字典,转成列表后拼接即可实现有序去重。
内容的提问来源于stack exchange,提问作者Diego González Castellanos
相关产品推荐
相关产品推荐

