gpt4 book ai didi

python - Pandas :删除有限的重复项

转载 作者:太空宇宙 更新时间:2023-11-04 02:32:28 25 4
gpt4 key购买 nike

所以,我有一个在运行时生成的文件。该文件的示例如下所示:

ID,Class_id,Column_A,Column_B,Column_C,Column_D,Mask
1,987,vermont,CA,450,liase,2
2,456,WB,cloo,452,var,1
3,987,CA,Cp,1000000,liase,2
4,456,SA,Cap,98376,clop,1
5,765,IN,clas,543,king,2
6,987,SA,CLA,200,loop,2
7,456,BEG,loop,876,var,1

如您所见,存在 Class_id 的重复元素。此外,Mask 指定文件中可以存在的重复元素的最大数量。

我想做的是一个一个地删除最后一次出现的重复元素,直到重复记录的数量与其 Mask 值相同。

对于上述文件,

987 of Class_id 出现了 3 次。它的 Mask 值为 2。因此它最多只能出现 2 次。所以我需要删除最后一次出现的 987,这是第 6 条记录。文件中记录的顺序在这里无关紧要。

我试图得到的输出是这样的:

ID,Class_id,Column_A,Column_B,Column_C,Column_D,Mask
1,987,vermont,CA,450,liase,2
3,987,CA,Cp,1000000,liase,2
2,456,WB,cloo,452,var,5
5,765,IN,clas,543,king,2

我搜索了这个网站,但找不到可行的解决方案。这些是我引用的网站;

Pandas: remove reverse duplicates from dataframe Find Duplicates limited to multiple ranges - pandas python pandas remove duplicate columns How to conditionally remove duplicates from a pandas dataframe Drop all duplicate rows in Python Pandas

我注意到 Python 有一个 drop_duplicates 函数。 Nut 我怎样才能限制要删除的重复项的数量?

有人可以帮助这里的新手吗?谢谢。

最佳答案

boolean indexing 与掩码一起使用,将 Series cumcount 与列 Mask lt ( < ) 进行比较:

df = df[df.groupby('Class_id').cumcount().lt(df.Mask)]
print (df)

ID Class_id Column_A Column_B Column_C Column_D Mask
0 1 987 vermont CA 450 liase 2
1 2 456 WB cloo 452 var 1
2 3 987 CA Cp 1000000 liase 2
4 5 765 IN clas 543 king 2

详细信息:

print (df.groupby('Class_id').cumcount())
0 0
1 0
2 1
3 1
4 0
5 2
6 2
dtype: int64

关于python - Pandas :删除有限的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48860704/

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