Pandas:如何删除重复项,同时保留具有最大值的行


您可以使用以下方法删除 pandas DataFrame 中的重复项,但保留包含特定列中最大值的行:

方法 1:删除列中的重复项并保留行的最大值

 df. sort_values (' var2 ', ascending= False ). drop_duplicates (' var1 '). sort_index ()

方法2:删除多列中的重复项并保留行的最大值

 df. sort_values (' var3 ', ascending= False ). drop_duplicates ([' var1 ', ' var2 ']). sort_index ()

以下示例展示了如何在实践中使用每种方法。

示例 1:删除列中的重复项并保留具有 Max 的行

假设我们有以下 pandas DataFrame,其中包含有关来自不同球队的篮球运动员得分的信息:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'],
                   ' points ': [20, 24, 28, 30, 14, 19, 29, 40, 22]})

#view DataFrame
print (df)

  team points
0 to 20
1 to 24
2 to 28
3 B 30
4 B 14
5 B 19
6 C 29
7 C 40
8 C 22

我们可以使用以下语法删除具有重复团队名称的行,但保留具有最大值的

 #drop duplicate teams but keeps row with max points
df_new = df. sort_values (' points ', ascending= False ). drop_duplicates (' team '). sort_index ()

#view DataFrame
print (df_new)

  team points
2 to 28
3 B 30
7 C 40

删除具有重复团队名称的每一行,但为每个团队保留具有最大分值的行。

示例 2:删除多列中的重复项并保留具有 Max 的行

假设我们有以下 pandas DataFrame:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'],
                   ' position ': ['G', 'G', 'F', 'G', 'F', 'F', 'G', 'G', 'F'],
                   ' points ': [20, 24, 28, 30, 14, 19, 29, 40, 22]})

#view DataFrame
print (df)

  team position points
0 AG 20
1 GA 24
2AF 28
3 BG 30
4 BF 14
5 BF 19
6 GC 29
7 GC 40
8 CF 22

我们可以使用以下语法删除具有重复团队位置名称的行,但保留具有点数最大值的行:

 #drop rows with duplicate team and positions but keeps row with max points
df_new = df. sort_values (' points ', ascending= False ). drop_duplicates ([' team ',' position ']). sort_index ()

#view DataFrame
print (df_new)

  team position points
1 GA 24
2AF 28
3 BG 30
5 BF 19
7 GC 40
8 CF 22

删除具有重复团队位置名称的每一行,但为每个团队和位置组合保留具有最大分值的行

其他资源

以下教程解释了如何在 pandas 中执行其他常见操作:

如何删除 Pandas 中的重复行
如何删除 Pandas 中的重复列
如何计算 pandas 中的重复项

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注