如何检查 python 和 select 中是否有重复的键行值 python 中具有最大数字列值的行

How to check if there's a duplicate key row value in python and select the row which has Maximum Numeric column value in python

我有以下数据集:

我需要删除具有重复键值的行,并在具有最大年龄的数据框中仅保留单个行值。

以下是所需的输出:

希望问题描述清楚。

答案取决于您为数据使用的框架。

如果您使用列表列表:

new_list = []
keys = set()
for row in old_list:
    key= row[0]
    if key in keys: # Allow no duplicates in set
        continue
    new_list.append(row)

如果您使用 pandas 例如:

import pandas as pd
data = {
    'Key': ['AnaSay', 'Noolla', 'SamHus', 'SamHus', 'SamHus', 'SamHus', 'EliFer'],
    'Name': ['Ana', 'Noo', 'Sam', 'Sam', 'Sam', 'Sam', 'Eli'],
    'Sir Name': ['Say', 'Ila', 'Hus', 'Hus', 'Hus', 'Hus', 'Fer'],
    'Age': [22, 25, 28, 30, 21, 20, 33],
    'Index': [1, 2, 5, 10, 12, 6, 2],
    'Max': [1, 2, 5, 10, 12, 6, 2],
    'T/F(Index==Max)': ['TRUE', 'TRUE', 'TRUE', 'TRUE', 'TRUE', 'TRUE', 'TRUE']
}
df = pd.DataFrame(data)
df = df.sort_values(by=['Age']) # Sort dataframe by age
print(df)
print()
df = df.drop_duplicates(subset='Key', keep='last') # Save maximum age
print(df)

pandas 中,您可以执行以下操作,其优点是您可以保留额外的条目以防年龄相同:

import pandas as pd

df = pd.DataFrame([{"key": 1, "name": "a", "age": 20},
                   {"key": 1, "name": "a", "age": 21},
                   {"key": 2, "name": "b", "age": 20}])


df.merge(df.groupby("key").age.max(), 
         left_on=("key", "age"), 
         right_on=("key", "age"))

输出:

    key     name    age
0   1   a   21
1   2   b   20