Найти дубликаты в одном столбце и вернуть индексы обоих дубликатов - PullRequest
0 голосов
/ 24 января 2020

Заполните newb ie здесь, поэтому, пожалуйста, потерпите меня (в том числе, как ввести код в это!).

Я хочу определить, есть ли какие-либо повторяющиеся возрасты. Если есть, то я хочу увидеть имена (или индексы) двух (или более), имеющих одинаковый возраст. Если есть два разных набора дубликатов, например, два в возрасте 3 года и два в возрасте 5 лет, я хочу указать самую старую пару (возраст 5 лет).

В приведенном ниже примере я хочу, чтобы он читался как Felix и Alex.

import pandas as pd
import random

name = ("Bob", "Stu", "Felix", "Rupert", "Alex")
age = [random.randint(1, 5) for i in range(len(name))]
job = ("Paramedic", "Police Officer", "Fireman", "Coastguard", "Astronaut")

for i in range(len(name)):
    print(name[i] + "\t" + str(age[i]) + "\t" + job[i])

oldest_kid = name[0]
oldest = age[0]

for i in range(len(name)):
    if oldest < age[i]:
        oldest_kid = name[i]
        oldest = age[i]

print("\n" + oldest_kid)

Вывод:

Bob     3    Paramedic
Stu     1    Police Officer
Felix   5    Fireman
Rupert  3    Coastguard
Alex    5    Astronaut

Felix

1 Ответ

0 голосов
/ 24 января 2020

Вот пример решения с использованием вашего кода. Должны быть более эффективные методы, но преимущество в том, что их легче понять начинающим.

import pandas as pd
import random

name = ("Bob", "Stu", "Felix", "Rupert", "Alex")
age = [random.randint(1, 5) for i in range(len(name))]
job = ("Paramedic", "Police Officer", "Fireman", "Coastguard", "Astronaut")

for i in range(len(name)):
    print(name[i] + "\t" + str(age[i]) + "\t" + job[i])

oldest_kid = name[0]
oldest = age[0]

ageList = [0] * 5 # 5 different age

for i in range(len(name)):
    ageList[ age[i] - 1 ] += 1

# find group of people with the same age
for i in range(len(ageList)):
    if ageList[i] >= 2: # 2 or more people have the same age
        groupe=""
        for j in range(len(name)):
            if age[j] == i+1:
                groupe += name[j]+" "
        if groupe != "":
            print("Groupe : " + groupe)

# find oldest groupe of peopple with the same age
for i in range(4,-1,-1): # start by the older
    if ageList[i] >= 2:
        groupe=""
        for j in range(len(name)):
            if age[j] == i+1:
                groupe += name[j]+" "
        print("Oldest groupe : " + groupe)
        break # quit the loop
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...