gpt4 book ai didi

具有复杂标准的python pandas重复数据删除

转载 作者:行者123 更新时间:2023-12-04 08:04:28 25 4
gpt4 key购买 nike

我在下面有一个数据框:

import pandas as pd
d = {'id': [1, 2, 3, 4, 4, 6, 1, 8, 9], 'cluster': [7, 2, 3, 3, 3, 6, 7, 8, 8]}
df = pd.DataFrame(data=d)
df = df.sort_values('cluster')

我想保留所有行
如果有相同的集群但不同的 id 并保留该集群中的每一行
即使它是相同的 id,因为在该集群中至少有一次不同的 id。
我一直用来实现这一点的代码如下,但是,唯一的问题
这是因为它为我正在寻找的内容删除了太多行。
df = (df.assign(counts=df.count(axis=1))
.sort_values(['id', 'counts'])
.drop_duplicates(['id','cluster'], keep='last')
.drop('counts', axis=1))
我期望上面的代码不做的输出数据帧
将删除行
数据帧索引 1、5、0 和 6,但保留数据帧索引 2、3、4、7 和 8。本质上
导致下面的代码产生:
df = df.loc[[2, 3, 4, 7, 8]]
我看过很多关于堆栈溢出的重复数据删除 Pandas 帖子,但还没有找到这个
设想。任何帮助将不胜感激。

最佳答案

我认为我们可以用一个 bool 值来做到这一点。使用 .groupby().nunique()

con1 = df.groupby('cluster')['id'].nunique() > 1

#of these we only want the True indexes.

cluster
2 False
3 True
6 False
7 False
8 True


df.loc[(df['cluster'].isin(con1[con1].index))]

id cluster
2 3 3
3 4 3
4 4 3
7 8 8
8 9 8

关于具有复杂标准的python pandas重复数据删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66297414/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com