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

如何在Pandas DataFrame中按列去除重复值并达成指定效果?

Pandas按列去除重复值并对齐行结构的实现方案

这问题我熟!要实现你要的按列去重、保留元素出现顺序且对齐行的效果,咱们可以一步步来操作,思路很清晰:

首先构造原始DataFrame

先把你给出的表格数据转换成Pandas能处理的DataFrame(注意最后一行的缺失值用np.nan表示):

import pandas as pd
import numpy as np

# 构造原始数据
df = pd.DataFrame({
    'set1': ['apple', 'apple', 'orange', 'banana', 'grape'],
    'set2': ['apple', 'orange', 'banana', 'lemon', 'lemon'],
    'set3': ['orange', 'banana', 'pear', 'pear', np.nan],
    'set4': ['orange', 'orange', 'banana', 'lemon', np.nan]
})

核心处理步骤

咱们的目标是每一列保留首次出现的唯一值,去掉后续重复项,然后把各列的结果对齐合并:

  1. 定义单列去重函数:先去掉列中的缺失值,再提取唯一值(unique()方法会严格保留元素第一次出现的顺序,完美匹配需求)

    def get_unique_column(col):
        # 过滤缺失值后提取唯一值
        return col.dropna().unique()
    
  2. 遍历所有列提取唯一值:用字典存储每一列的去重结果

    unique_columns = {col_name: get_unique_column(df[col_name]) for col_name in df.columns}
    
  3. 合并为结果DataFrame:把每一列的去重结果转成Series,再按列合并,Pandas会自动对齐行,短列的末尾会填充NaN

    result_df = pd.concat(
        [pd.Series(values, name=col) for col, values in unique_columns.items()],
        axis=1
    )
    
  4. 可选:替换缺失值为空字符串:如果不想显示NaN,可以把它换成空字符串,和你给出的示例格式完全一致

    result_df = result_df.fillna('')
    

最终结果

运行完上面的代码后,result_df就是你想要的效果:

set1    set2    set3    set4
0  apple   apple  orange  orange
1  orange  orange  banana  banana
2  banana    pear    pear   lemon
3   grape   lemon               

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:18:07