在pandas数据框中查找重复行

2024-09-27 04:18:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在pandas数据框中找到重复的行。

df=pd.DataFrame(data=[[1,2],[3,4],[1,2],[1,4],[1,2]],columns=['col1','col2'])

df
Out[15]: 
   col1  col2
0     1     2
1     3     4
2     1     2
3     1     4
4     1     2

duplicate_bool = df.duplicated(subset=['col1','col2'], keep='first')
duplicate = df.loc[duplicate_bool == True]

duplicate
Out[16]: 
   col1  col2
2     1     2
4     1     2

是否有方法添加引用第一个副本(保留的副本)索引的列

duplicate
Out[16]: 
   col1  col2  index_original
2     1     2               0
4     1     2               0

注:在我的情况下,df可能非常大。。。。


Tags: columns数据dataframepandasdfdata副本out
1条回答
网友
1楼 · 发布于 2024-09-27 04:18:16

使用groupby,创建一个新的索引列,然后调用duplicated

df['index_original'] = df.groupby(['col1', 'col2']).col1.transform('idxmin')    
df[df.duplicated(subset=['col1','col2'], keep='first')]

   col1  col2  index_original
2     1     2               0
4     1     2               0

详细信息

groupby前两列,然后调用transform+idxmin获得每组的第一个索引。

df.groupby(['col1', 'col2']).col1.transform('idxmin') 

0    0
1    1
2    0
3    3
4    0
Name: col1, dtype: int64

duplicated为我提供一个要保留的值的布尔掩码:

df.duplicated(subset=['col1','col2'], keep='first')

0    False
1    False
2     True
3    False
4     True
dtype: bool

剩下的就是布尔索引。

相关问题 更多 >

    热门问题