如何根据两列的值删除重复行?

How to drop duplicate rows based on values of two columns?

我有一个这样的数据框:

Category Date_1       Score_1    Date_2           Score_2
  A      13/11/2019    5        13/11/2019        10
  A      13/11/2019    5        14/11/2019        55
  A      13/11/2019    5        15/11/2019        45
  A      13/11/2019    5        16/11/2019        80
  A      14/11/2019    3        13/11/2019        10
  A      14/11/2019    3        14/11/2019        55
  A      14/11/2019    3        15/11/2019        45
  A      14/11/2019    3        16/11/2019        80
  A      15/11/2019    7        13/11/2019        10
  A      15/11/2019    7        14/11/2019        55
  A      15/11/2019    7        15/11/2019        45
  A      15/11/2019    7        16/11/2019        80
  B      13/11/2019    4        13/11/2019        18
  B      13/11/2019    4        14/11/2019        65
  B      13/11/2019    4        15/11/2019        75
  B      13/11/2019    4        16/11/2019        89
  B      14/11/2019    9        13/11/2019        18
  B      14/11/2019    9        14/11/2019        65
  B      14/11/2019    9        15/11/2019        75
  B      14/11/2019    9        16/11/2019        89
  B      15/11/2019    8        13/11/2019        18
  B      15/11/2019    8        14/11/2019        65
  B      15/11/2019    8        15/11/2019        75
  B      15/11/2019    8        16/11/2019        89

我想保留两个日期相同的行。 我是这样做的:

df.drop_duplicates(subset=['Date_1', 'Date_2'])

但它不起作用。不知道如何删除那些多余的行?

使用 boolean indexing 比较两列:

df1 = df[df['Date_1'] == df['Date_2'])

DataFrame.query:

df1 = df.query("Date_1 == Date_2")

您可以使用 duplicated 和参数 subset 指定要使用 keep=False 检查的列,用于通过布尔索引屏蔽和过滤的所有重复项。以下应该有效:

df = df[df.duplicated(subset=['Date_1', 'Date_2'], keep=False)]

备注:最初,我可能误读了OP想要删除重复项,答案如下:

df = df.drop_duplicates(subset=['Date_1', 'Date_2'], keep='last')

您应该始终像上面那样分配 df 以应用更改。否则,您可以添加 inplace=True 以在不分配的情况下应用更改:

df.drop_duplicates(subset=['Date_1', 'Date_2'], keep='last', inplace=True)

如果这与其他人提供的解决方案一样不奏效,您可能需要检查 subset 中的那些列的数据类型是否有任何差异,例如日期时间格式。