当前位置: 首页 > 面试题库 >

从Pandas DataFrame删除重复项,并保留原始条件

强志学
2023-03-14
问题内容

假设我有以下DataFrame:

 A | B
 1 | Ms
 1 | PhD
 2 | Ms
 2 | Bs

我想删除与A列有关的重复行,并且我想保留B列中值为“ PhD”的行作为原始行,如果找不到“ PhD”,我想保留该行。 B列中的“ Bs”。

我正在尝试使用

 df.drop_duplicates('A')

有条件


问题答案:
>>> df
    A   B
0   1   Ms
1   1   Ms
2   1   Ms
3   1   Ms
4   1   PhD
5   2   Ms
6   2   Ms
7   2   Bs
8   2   PhD

使用自定义函数对数据框进行排序:

def sort_df(df, column_idx, key):
    '''Takes a dataframe, a column index and a custom function for sorting, 
    returns a dataframe sorted by that column using that function'''

    col = df.ix[:,column_idx]
    df = df.ix[[i[1] for i in sorted(zip(col,range(len(col))), key=key)]]
    return df

我们的排序功能

cmp = lambda x:2 if 'PhD' in x else 1 if 'Bs' in x else 0

实际上:

sort_df(df,'B',cmp).drop_duplicates('A', take_last=True)

    A   B
4   1   PhD
8   2   PhD


 类似资料:
  • 问题内容: 我有两个列表需要合并,第二个列表忽略了第一个列表的重复项。..有点难以解释,所以让我展示一个代码看起来像什么,以及我想要什么的示例。 您会注意到结果具有第一个列表, 包括 其两个“ 2”值,但是second_list也具有附加的2和5值这一事实并未添加到第一个列表中。 通常,对于这样的事情,我会使用集合,但是first_list上的集合会清除它已经具有的重复值。所以我只是想知道什么是实

  • 我需要删除每个表ID的所有重复项,除了一个之外。像下面这样。我需要删除valueid上01,02,03的所有副本。。。 原件: 应该这样结束: 我试着用这样的东西来做,但是我不知道我怎么才能在id上删除这些内容 有什么建议吗? 提前感谢

  • 本文向大家介绍SQL语句实现删除重复记录并只保留一条,包括了SQL语句实现删除重复记录并只保留一条的使用技巧和注意事项,需要的朋友参考一下 SQL:删除重复数据,只保留一条用SQL语句,删除掉重复项只保留一条在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢 1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 2、删除表中多余的重复记录,重复记录是根据

  • 我试图编写一个代码,它接收并删除该中的重复字符。 例如。如果,则应返回。到目前为止,我的代码只返回与给定的相同的tekst…

  • 问题内容: 我犯了一个错误,并且有多余的重复项。 我有一个包含4个关键字段的表。,,,。 是自动递增和主键。 的组合,而应该是唯一的,我有我之前创建唯一索引来删除重复的行。有些行有一个重复项,有些行有很多重复项。 向我显示了我需要处理的重复值。但是现在我不知道如何保留一个并删除每个重复集的其余部分。 问题答案: 备份数据,然后… MySQL在DELETE语句中支持JOIN。如果要保留第一个重复项:

  • 我有下表和Postgres: 作为select查询的一部分,我希望能够基于最高的Col2值(每个Col1值永远不会有多个最高值)在Col1中删除重复项,并保留相应的Col2、Col3值。 期望输出:

  • 我有一个数据帧列表。列表中的每个数据帧都是唯一的,这意味着有一些共享但不同的列。我想创建一个dataframe,它包含dataframe列表中的所有列,如果元素不存在,它将填充NaN。我试过以下方法 问题似乎是由于列表中的数据帧造成的。每个数据帧只有一行,因此其索引为零,因此重新编制索引不会起作用。我试过这个: 几乎生成一个随机数作为索引。但是,要获得此错误,请执行以下操作:

  • 我有一个简单的数据库表 我想删除所有按fv和sv分组的重复行。这已经是一个相当流行的问题,有很好的答案。但我需要改变这种情况。当rel\u id为NULL时,我想保留该行。在任何其他情况下,任何事情都会发生。 所以通过使用以下值 任何一个 或 将是有效的结果。其中为 不会。因为第一个条目有作为,它在之上担任主席。 我目前有这个(这是关于基本重复问题的答案)作为删除重复项的查询,但我不确定如何继续修