Извлечение первой строки DataFrame по совпадению значения столбца
Допустим, есть DataFrame:
| |name| adress | age |
|:----------|:--:|:-------:|:---:|
| **0** |Jack|adress111| 25 |
| **1** |John|adress123| 52 |
| **2** |Jack|adress349| 25 |
| **3** |Jack|adress782| 25 |
| **4** |Nick|adress821| 41 |
| **5** |John|adress821| 52 |
| --- | ---| --- |--- |
|**2125369**|Jack|adress199| 25 |
В столбце name есть 3 (в оригинале их 800) уникальных значений и точно так же 3 уникальных значения в столбце age.
Как мне получить словарь {name:age} (или новый DataFrame в общем любую структуру), за минимально короткое время?
Думал как-то извлекать строку при первом совпадении, но нашел только способ перебора всего массива, но значений много и это происходит очень долго.
Ответы (1 шт):
Автор решения: MaxU
→ Ссылка
Воспользуйтесь DataFrame.drop_duplicates():
In [21]: df[["name", "age"]].drop_duplicates()
Out[21]:
name age
0 Jack 25
1 John 52
4 Nick 41
в виде словаря:
In [22]: df[["name", "age"]].drop_duplicates().to_dict("records")
Out[22]:
[{'name': 'Jack', 'age': 25},
{'name': 'John', 'age': 52},
{'name': 'Nick', 'age': 41}]
если вам нужно получить все столбцы, но удалить строки с повторяющимися name и age:
In [23]: df.drop_duplicates(subset=["name", "age"])
Out[23]:
name adress age
0 Jack adress111 25
1 John adress123 52
4 Nick adress821 41