Dataframe 根据两列或多列中的条件删除行
我是编程新手,请原谅我的无知 我有以下数据帧:Dataframe 根据两列或多列中的条件删除行,dataframe,iteration,drop,Dataframe,Iteration,Drop,我是编程新手,请原谅我的无知 我有以下数据帧: ID Name 0 AJ-6 Mark 1 AJ-6 Mark 2 AJ-6-FR Judith 3 AJ-6-FR Judith 4 AJ-6-FR Christian .. ... ... 299 TV-552 Marie 300 TV-552
ID Name
0 AJ-6 Mark
1 AJ-6 Mark
2 AJ-6-FR Judith
3 AJ-6-FR Judith
4 AJ-6-FR Christian
.. ... ...
299 TV-552 Marie
300 TV-552 Ruth
309 ZS-V-21 John
310 ZS-V-21 John
311 ZS-V-21 John
我的意图是删除那些重复ID的行(即第0-1行或第309-311行),并且该行中有相同的名称
我尝试了很多方法,比如使用iterrows和带有移位列的条件,但我担心在迭代时不可能删除多行
我只是显示了两列,其中可以找到条件,但可能还有更多(即,如果列['age']>=20:删除行)
感谢各位先生和夫人的帮助。您可以试试
df = df.loc[(df['ID']!=df['shiftdown'])&(df['ID']!=df['shiftup'])]
仅当ID值与shiftdown和shiftup不同时,它才检查并保留行
相反,如果您只想基于特定列删除具有相同值的行,则可以使用df.drop_values(by=[col_name]),这个问题并不清楚。您可以尝试这样做(如果df
是您的数据帧):
亲爱的爱德华多。非常感谢您的投入。我试图用你的解决方案解决我的问题,但我意识到我的问题比我想象的要复杂一些。我最终决定重新制定它。很抱歉给您带来不便。我希望你能帮助我。我认为,如果你有多个条件要应用,而这些条件彼此确实不同,那么执行更多的“清理”步骤可能比将所有内容压缩在一行代码中更简单。考虑每个条件的优先级(您想先按年龄筛选还是先检查重复项?)。另外,看看下面的LINK,它包含了一些代码示例,您可以为代码复制这些示例。如果不确切知道您的输出应该是什么,那么很难再提供更多帮助
df.drop_duplicates(subset = ['ID', 'Name'], inplace = True)