gpt4 book ai didi

pandas - pd.duplicated() 重复组

转载 作者:行者123 更新时间:2023-12-05 09:14:37 26 4
gpt4 key购买 nike

我有一个包含许多列和行的大型数据框,这些数据来自许多 Excel 文件。我想找到导致重复的文件,因为有时文件会部分包含不应包含在 Excel 文件中的观察结果。我知道 df[df.duplicated(subset=['A','B'],keep=False)] 给了我所有重复的行。

import pandas as pd
df = pd.DataFrame({'A':[1,1,2,2,2,2,3,3],'B':['Q','Q','R','R','R','P','L','L'],'origin':['file1','file2','file3','file4','file5','file6','file7','file8']})

我希望结果看起来像

result = pd.DataFrame({'A':[1,1,2,2,2,3,3],'B':['Q','Q','R','R','R','L','L'],'origin':['file1','file2','file3','file4','file5','file7','file8'],'group':['g1','g1','g2','g2','g2','g3','g3'],'duplicate_count':[2,2,3,3,3,2,2]})

但是,我想始终将两个(或更多)对应的重复项分组,然后打印相应的文件和重复项发生的次数。我没有成功找到答案。

最佳答案

使用duplicated使用 keep='False' 过滤所有受骗者 boolean indexing , 然后 sort_values , 对于每组的数字使用 ngroup , 计数 transformsize :

cols = ['A','B']
df1 = df[df.duplicated(subset=cols,keep=False)].copy()
df1 = df1.sort_values(cols)
df1['group'] = 'g' + (df1.groupby(cols).ngroup() + 1).astype(str)
df1['duplicate_count'] = df1.groupby(cols)['origin'].transform('size')
print (df1)
A B origin group duplicate_count
0 1 Q file1 g1 2
1 1 Q file2 g1 2
2 2 R file3 g2 3
3 2 R file4 g2 3
4 2 R file5 g2 3
6 3 L file7 g3 2
7 3 L file8 g3 2

关于pandas - pd.duplicated() 重复组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53760860/

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