首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有一个函数可以在不使用Python删除整行的情况下删除行中的重复项?

是否有一个函数可以在不使用Python删除整行的情况下删除行中的重复项?
EN

Stack Overflow用户
提问于 2022-08-12 14:46:05
回答 4查看 89关注 0票数 0
代码语言:javascript
复制
import pandas as pd

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

在这个数据框架中,我希望阅读每一行并删除重复项,以便每个人的问题只报告一次。这意味着在第1行中删除“老年痴呆症”作为复制。我尝试了drop_duplicates()函数,但这删除了整个行。

任何帮助都将不胜感激!

EN

回答 4

Stack Overflow用户

发布于 2022-08-12 15:04:02

首先,重新创建一个数据示例:

代码语言:javascript
复制
import pandas as pd
data=[["John","Alzheimer's","Infection","Alzheimer's"],["Kevin","Pneumonia","Pneumonia","Tuberculosis"]]
df=pd.DataFrame(data,columns=['Name','Problem1','Problem2','Problem3'])

df

现在要用空空间删除或替换重复:

代码语言:javascript
复制
df['Problem2']=df.apply(lambda x:x["Problem2"] if not(x["Problem2"]==x['Problem1']) else " ",axis=1)


df['Problem3']=df.apply(lambda x:x["Problem3"] if not(x["Problem3"]==x['Problem2'] or x["Problem3"]==x['Problem1']) else " ",axis=1)
df

票数 0
EN

Stack Overflow用户

发布于 2022-08-12 15:05:02

为此,您可以尝试使用df.duplicated-function。这类似于df.drop_duplicates,但返回一个布尔序列,而不是删除重复项。然后,可以通过此布尔序列将值设置为None来索引初始数据。

票数 0
EN

Stack Overflow用户

发布于 2022-08-12 22:30:50

使用applyduplicated

确保使用axis=1参数在apply上应用于行而不是列。duplicated将返回一个布尔序列,默认情况下,该序列将第一个匹配项设置为“False”。在~中使用与本系列相反的值将保留我们的非复制值,而忽略重复的值。

示例设置

代码语言:javascript
复制
import pandas as pd

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

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

去叠

代码语言:javascript
复制
deduped_df = df.apply(lambda row: row[~row.duplicated()],axis=1)

输出

代码语言:javascript
复制
>>> deduped_df
    Name     Problem1   Problem2      Problem3
0   John  Alzheimer's  Infection           NaN
1  Kevin    Pneumonia        NaN  Tuberculosis
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73335908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档