如何检查 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
我有以下数据集:
我需要删除具有重复键值的行,并在具有最大年龄的数据框中仅保留单个行值。
以下是所需的输出:
希望问题描述清楚。
答案取决于您为数据使用的框架。
如果您使用列表列表:
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