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

时间:2018-06-16 04:57:29

标签: python pandas

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

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

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

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

3 个答案:

答案 0 :(得分:7)

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'

答案 1 :(得分:2)

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)

答案 2 :(得分:0)

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

以下"经测试"代码也是这样:

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)

在子参数内部,您也可以插入其他列名称,默认情况下,它会考虑数据的所有列,并且您可以提供保持值: -

  • first:删除第一次出现的重复项。
  • last:删除重复项,但最后一次出现除外。
  • 错误:删除所有重复项。