如果你想在一个DataFrame中根据所有或选定的列找到重复的行,可以使用pandas.dataframe.diplicated()函数。在
数据科学
中,有时候,你会得到一个混乱的数据集。例如,你可能不得不处理重复的数据,这将使你的分析出现偏差。
Pandas的重复行
要在
Pandas
DataFrame
中
找到
重复的
行
,可以使用**pd.df.diplicated()**函数。**Pandas.DataFrame.diplicated()**是一个库函数,可以根据所有或特定的列找到重复的行。
pd.df.diplicated()
函数为每条重复的行返回一个布尔系列,其值为
真
。
pandas.dataframe.diplicated()函数的语法如下。
DataFrame.duplicated(subset =None, keep='first' )
subset :
单列或多列标签应被用于重复检查。如果你不提供这些参数,那么所有的列都将被检查以找到重复的行。
keep:
它表示出现的情况,应该被标记为重复的。它的值可以是{"第一个","最后一个",假的}, 默认值是 "第一个"。
第一个。除了第一次出现外,所有重复的行都将被标记为 "真"。
最后一个。除了最后一次出现外,所有重复的行都将被标记为 "真"。
错。所有的重复都将被标记为真。
series = [('Stranger Things' , 3 , 'Millie' ),
('Game of Thrones' , 8 , 'Emilia' ), ('La Casa De Papel' , 4 , 'Sergio' ),
('Westworld' , 3 , 'Evan Rachel' ), ('Stranger Things' , 3 , 'Millie' ),
('La Casa De Papel' , 4 , 'Sergio' )]
dfObj = pd.DataFrame(series, columns=['Name' , 'Seasons' , 'Actor' ])
print(dfObj)
python3 app.py
Name Seasons Actor
0 Stranger Things 3 Millie
1 Game of Thrones 8 Emilia
2 La Casa De Papel 4 Sergio
3 Westworld 3 Evan Rachel
4 Stranger Things 3 Millie
5 La Casa De Papel 4 Sergio
正如你所看到的,上面的数据框架包含重复的行。
基于所有的列来查找重复的行。
如果我们想找到并选择重复的,所有的行都基于所有的列,调用Daraframe.duplicate(),不需要任何子集 参数。它将返回每个重复的行的布尔系列,除了它们的第一次出现外,都是True (keep 参数的默认值是 "第一") 。然后将这个布尔系列传递给Dataframe的[]操作符来选择重复的行。
请看下面的代码。
import pandas as pd
series = [('Stranger Things' , 3 , 'Millie' ),
('Game of Thrones' , 8 , 'Emilia' ), ('La Casa De Papel' , 4 , 'Sergio' ),
('Westworld' , 3 , 'Evan Rachel' ), ('Stranger Things' , 3 , 'Millie' ),
('La Casa De Papel' , 4 , 'Sergio' )]
dfObj = pd.DataFrame(series, columns=['Name' , 'Seasons' , 'Actor' ])
duplicateDFRow = dfObj[dfObj.duplicated()]
print(duplicateDFRow)
python3 app.py
Name Seasons Actor
4 Stranger Things 3 Millie
5 La Casa De Papel 4 Sergio
这里所有重复的行都被返回,除了第一次出现的,因为keep参数的默认值是 "第一"。
如果我们想选择所有重复的行,除了最后出现的行,我们必须传递一个keep 参数为 "**last"。**请看下面的代码。
import pandas as pd
series = [('Stranger Things' , 3 , 'Millie' ),
('Game of Thrones' , 8 , 'Emilia' ), ('La Casa De Papel' , 4 , 'Sergio' ),
('Westworld' , 3 , 'Evan Rachel' ), ('Stranger Things' , 3 , 'Millie' ),
('La Casa De Papel' , 4 , 'Sergio' )]
dfObj = pd.DataFrame(series, columns=['Name' , 'Seasons' , 'Actor' ])
duplicateDFRow = dfObj[dfObj.duplicated(keep='last' )]
print(duplicateDFRow)
pyt python3 app.py
Name Seasons Actor
0 Stranger Things 3 Millie
2 La Casa De Papel 4 Sergio
根据选定的列查找重复的行。
如果我们想比较行并根据选定的列找到重复的行,我们应该在**Dataframe.duplicate()**函数的subset参数中传递列名列表。然后,它将只根据这些传递的列选择并返回重复的行。
例如,让我们根据一个单列来查找和选择行。
import pandas as pd
series = [('Stranger Things' , 3 , 'Millie' ),
('Game of Thrones' , 8 , 'Emilia' ), ('La Casa De Papel' , 4 , 'Sergio' ),
('Westworld' , 3 , 'Evan Rachel' ), ('Stranger Things' , 3 , 'Millie' ),
('La Casa De Papel' , 4 , 'Sergio' )]
dfObj = pd.DataFrame(series, columns=['Name' , 'Seasons' , 'Actor' ])
duplicateDFRow = dfObj[dfObj.duplicated(['Name' ])]
print(duplicateDFRow)
pyt python3 app.py
Name Seasons Actor
4 Stranger Things 3 Millie
5 La Casa De Papel 4 Sergio
在这里,在 "**姓名 "**列中有相同值的行被标记为重复的行并返回。
让我们看看另一个例子。
基于两列名称查找并选择行。
import pandas as pd
series = [('Stranger Things' , 3 , 'Millie' ),
('Game of Thrones' , 8 , 'Emilia' ), ('La Casa De Papel' , 4 , 'Sergio' ),
('Westworld' , 3 , 'Evan Rachel' ), ('Stranger Things' , 3 , 'Millie' ),
('La Casa De Papel' , 4 , 'Sergio' )]
dfObj = pd.DataFrame(series, columns=['Name' , 'Seasons' , 'Actor' ])
duplicateDFRow = dfObj[dfObj.duplicated(['Name' , 'Seasons' ])]
print(duplicateDFRow)
pyt python3 app.py
Name Seasons Actor
4 Stranger Things 3 Millie
5 La Casa De Papel 4 Sergio
如果你想在Pandas DataFrame 中找到重复的行,你可以使用pandas.dataframe.diplicated()函数。
本教程到此结束。
65.3w
11158
王伟同学44009
Python
NumPy