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

DataFrame特定列重复值移除:按指定列匹配规则清理

按指定规则清理DataFrame指定列的重复值

需求说明

  • 对DataFrame执行以下去重规则:
    1. 移除col2中所有与col1值重复的内容
    2. 移除col3中所有与col1、处理后的col2值重复的内容
    3. col4和col5保持原样

输入示例

col1 col2 col3 col4 col5
1    12        1    6    
2    1    9    1    0
3         1    2
4    9    11   3    10 
5    6         4
6    1    3    5

预期输出

col1 col2 col3 col4 col5
1    12        1    6    
2              1    0
3              2
4    9    11   3    10 
5              4
6              5

解决方案(Pandas实现)

import pandas as pd
import numpy as np

# 构造输入DataFrame
df = pd.DataFrame({
    'col1': [1,2,3,4,5,6],
    'col2': [12,1,np.nan,9,6,1],
    'col3': [np.nan,9,1,11,np.nan,3],
    'col4': [1,1,2,3,4,5],
    'col5': [6,0,np.nan,10,np.nan,np.nan]
})

# 处理col2:移除与col1重复的值
df['col2'] = df.apply(lambda row: np.nan if row['col2'] == row['col1'] else row['col2'], axis=1)

# 处理col3:移除与col1、处理后col2重复的值
df['col3'] = df.apply(
    lambda row: np.nan if (row['col3'] == row['col1'] or row['col3'] == row['col2']) else row['col3'],
    axis=1
)

# 按示例格式输出空值
print(df.to_string(na_rep=''))

代码说明

  1. 用np.nan标记输入中的空值,构造符合示例的DataFrame
  2. 逐行校验col2:若值与当前行col1相等,则替换为空值,否则保留原内容
  3. 逐行校验col3:若值与当前行col1或处理后的col2相等,则替换为空值,否则保留原内容
  4. 输出时将np.nan转为空字符串,匹配示例格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 21:35:24