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

如何用Python在不删除整行的情况下去除DataFrame每行内的重复值?

Pandas每行去除重复病症的解决方案

首先看你的原始DataFrame创建代码:

import pandas as pd

data=[["John","Alzheimer's","Infection","Alzheimer's"],["Kevin","Pneumonia","Pneumonia","Tuberculosis"]]
df=pd.DataFrame(data,columns=['Name','Problem1','Problem2','Problem3'])

你需要的是每行内去除重复的病症,而drop_duplicates()是针对整行重复的情况,所以不适用。这里提供两种实用的解决方式:

方式一:将去重后的病症存为新列

这种方式适合后续对病症做批量分析,把每行的唯一病症整理成列表:

# 对每行从第2列开始(跳过Name)去重,生成唯一病症列表
df['Unique_Problems'] = df.apply(lambda row: list(pd.unique(row[1:])), axis=1)

# 查看结果
print(df)

输出结果:

Name       Problem1    Problem2       Problem3          Unique_Problems
0   John  Alzheimer's   Infection  Alzheimer's   [Alzheimer's, Infection]
1  Kevin    Pneumonia   Pneumonia  Tuberculosis  [Pneumonia, Tuberculosis]

方式二:保持原列结构,重复位置填充空值

如果需要保留原表格的列结构,把重复出现的病症位置替换为空值:

def clean_row_duplicates(row):
    seen = set()
    cleaned = []
    for value in row:
        if value not in seen:
            seen.add(value)
            cleaned.append(value)
        else:
            cleaned.append(None)
    return cleaned

# 应用函数到每行,保持列名不变
df_cleaned = df.apply(clean_row_duplicates, axis=1, result_type='expand')
df_cleaned.columns = df.columns

# 查看结果
print(df_cleaned)

输出结果:

Name       Problem1    Problem2       Problem3
0   John  Alzheimer's   Infection          None
1  Kevin    Pneumonia         None  Tuberculosis

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 07:24:25