当前位置: 首页 > 知识库问答 >
问题:

熊猫:如何删除重复的行,但保持所有行的最大值[重复]

商焕
2023-03-14

如何删除重复行,但保留所有行的最大值。例如,我有一个包含4行的数据帧:

data = [{'a': 1, 'b': 2, 'c': 3},{'a': 7, 'b': 10, 'c': 2}, {'a': 7, 'b': 2, 'c': 20}, {'a': 7, 'b': 2, 'c': 20}]
df = pd.DataFrame(data)

从这个数据帧中,我想有一个这样的数据帧(3行,按'a'分组,保留所有在'c'中有最大值的行):

data = [{'a': 1, 'b': 2, 'c': 3}, {'a': 7, 'b': 2, 'c': 20}, {'a': 7, 'b': 2, 'c': 20}]
df = pd.DataFrame(data)

共有2个答案

全丰
2023-03-14

你可以计算每个组的maxc使用Groupby转换,然后过滤记录等于max的地方,比如:

df['max_c'] = df.groupby('a')['c'].transform('max')
df[df['c']==df['max_c']].drop(['max_c'], axis=1)
颜昕
2023-03-14

您可以使用带有布尔索引的GroupBytransform

res = df[df['c'] == df.groupby('a')['c'].transform('max')]

print(res)

   a  b   c
0  1  2   3
1  7  2  20
2  7  2  20
 类似资料:
  • 我有一个大型数据框(超过100列,还有几行10万行),其中包含许多包含重复数据的行。我正在尝试删除重复的行,将具有最大值的行保留在不同的列中。 本质上,我是根据时间段将数据分类到各个箱中,所以在不同的时间段,人们会发现很多重复,因为大多数实体存在于所有的时间段。然而,不允许的是同一实体在给定的时间段内出现不止一次。 我在python pandas中尝试了这种方法:通过列A删除重复项,在数据子集上保

  • 问题内容: 我有一个看起来像这样的熊猫数据框。 我想确定cat和bat是重复的相同值,因此想删除一个记录并仅保留第一条记录。结果数据帧应该只有一个。 问题答案: 使用具有与列的列表上检查重复和保持第一重复的。 如果是: 结果: 然后: 结果:

  • 我有一个熊猫数据框,看起来像这样。 我想确定猫和蝙蝠是重复的相同值,因此想删除一条记录,只保留第一条记录。所得到的数据帧应该只具有。

  • 问题内容: 这个问题已经在这里有了答案 : 在MySQL中删除重复的行 (25个答案) 3个月前关闭。 如何从MySQL表中删除所有重复数据? 例如,具有以下数据: 我会使用,如果它是一个查询。 我该怎么做才能只删除重复项并仅保留每个记录一个? 问题答案: 编辑者警告:此解决方案的计算效率低下,可能会降低大型表的连接。 注意:您 需要 首先在表的 测试副本 上执行此操作! 完成此操作后,我发现,除

  • 问题内容: 我有三列的表:,和 有重复的字段。我想删除所有具有相同的行为别人 ,除了 对最近更新的一个。 因此,如果表包含这些行: 然后,我只想保留这些行: 您如何在SQL中做到这一点?我想象会从具有重复值的行中删除单个random(?)行,但是如何使其除最近更新的行之外的 所有 行删除呢? 问题答案: 您可以使用左联接来执行此操作: 这意味着对于每一行,它会寻找更新日期最近的另一行,如果有更新日