如何删除pandas数据框中具有重复列值的行?

2024-04-28 12:11:11 发布

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

我有一个像这样的熊猫数据框。

'Column1' 'Column2' 'Column3'
'cat'     'bat'.    'xyz'
'toy'    'flower'.  'abc'
'cat'    'bat'      'lmn'

我想确定cat和bat是重复的相同值,因此要删除一条记录并只保留第一条记录。生成的数据帧应该只有。

'Column1'  'Column2' 'Column3'
'cat'.     'bat'.     'xyz'
'toy'.     'flower'.  'abc'   

Tags: 数据记录catabcflowertoycolumn1xyz
3条回答

使用带列列表的drop_duplicatessubset检查重复项,并使用keep='first'保留第一个重复项。

如果dataframe是:

df = pd.DataFrame({'Column1': ["'cat'", "'toy'", "'cat'"],
                   'Column2': ["'bat'", "'flower'", "'bat'"],
                   'Column3': ["'xyz'", "'abc'", "'lmn'"]})
print(df)

结果:

  Column1   Column2 Column3
0   'cat'     'bat'   'xyz'
1   'toy'  'flower'   'abc'
2   'cat'     'bat'   'lmn'

然后:

result_df = df.drop_duplicates(subset=['Column1', 'Column2'], keep='first')
print(result_df)

结果:

  Column1   Column2 Column3
0   'cat'     'bat'   'xyz'
1   'toy'  'flower'   'abc'

Dataframedrop_duplicates()方法中,您可以提供一系列列名来消除数据中的重复记录。

以下“已测试”代码的作用相同:

import pandas as pd

df = pd.DataFrame()
df.insert(loc=0,column='Column1',value=['cat',     'toy',    'cat'])
df.insert(loc=1,column='Column2',value=['bat',    'flower',  'bat'])
df.insert(loc=2,column='Column3',value=['xyz',     'abc',    'lmn'])

df = df.drop_duplicates(subset=['Column1','Column2'],keep='first')
print(df)

在subset参数内,还可以插入其他列名,默认情况下,它将考虑数据的所有列,并且可以提供keep值:

  • 第一次:删除除第一次出现以外的重复项。
  • 最后:除去最后一次出现的重复项。
  • 错误:删除所有重复项。
import pandas as pd

df = pd.DataFrame({"Column1":["cat", "dog", "cat"],
                    "Column2":[1,1,1],
                    "Column3":["C","A","B"]})

df = df.drop_duplicates(subset=['Column1'], keep='first')
print(df)

相关问题 更多 >