首页 > 解决方案 > 如何检查python中是否存在重复的键行值并选择python中具有最大数字列值的行

问题描述

我有以下数据集:

在此处输入图像描述

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

以下是所需的输出:

在此处输入图像描述

我希望问题陈述得到很好的定义。

标签: pythonpython-3.xdataframeduplicatesdata-processing

解决方案


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

如果您使用列表列表:

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)

例如,如果您使用熊猫:

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)

推荐阅读