Посчитай самую повторную пару получи эту пару в пандах - PullRequest
0 голосов
/ 18 мая 2018

Я работал в проекте для класса, и я не знаю, как я могу получить направление (с полями широта и долгота), наиболее повторяемое в DataFrame.Это пример моего Dataframe:

                                  coor      lats      longs
0           {-8.51114625, 42.90692115} -8.511146  42.906921
1            {-8.4228133, 43.34566085} -8.422813  43.345661
2           {-8.51114625, 42.90692115} -8.511146  42.906921
3            {-8.4228133, 43.34566085} -8.422813  43.345661
4           {-8.51114625, 42.90692115} -8.511146  42.906921
5           {-8.51114625, 42.90692115} -8.511146  42.906921
6           {-8.51114625, 42.90692115} -8.511146  42.906921
7           {-8.51114625, 42.90692115} -8.511146  42.906921
8           {-8.51114625, 42.90692115} -8.511146  42.906921
9           {-8.51114625, 42.90692115} -8.511146  42.906921
10           {-8.4228133, 43.34566085} -8.422813  43.345661
11           {-8.4228133, 43.34566085} -8.422813  43.345661
12          {-8.51114625, 42.90692115} -8.511146  42.906921
13          {-8.51114625, 42.90692115} -8.511146  42.906921
14           {-8.4228133, 43.34566085} -8.422813  43.345661
15           {-8.4228133, 43.34566085} -8.422813  43.345661

Я выполняю это:

coords.groupby(['longs','lats']).size().sort_values(ascending=False)[:5]

Где координаты - это имя файла данных.И я получаю что-то вроде этого:

longs      lats     
43.345661  -8.422813    303
42.906921  -8.511146    194
43.511210  -8.269336    120
42.798237  -8.866379     31
42.890181  -8.645030     19
dtype: int64

Здесь, если я пытаюсь получить доступ к первому элементу, я получаю количество раз, которое он появляется (в этом случае я получаю 303), но мне нужны широта идолгота: длинные: 43,345661 и лат: -8,422813.

1 Ответ

0 голосов
/ 18 мая 2018

Вы можете попробовать с reset_index (, используя только записи, показанные в вопросе выше для фрейма данных ):

grouped_df = coords.groupby(['longs','lats']).size().sort_values(ascending=False).to_frame('value_count').reset_index()[:5]
print(grouped_df)

Результат для группировки:

       longs      lats  value_count
0  42.906921 -8.511146           10
1  43.345661 -8.422813            6

Теперь, чтобы получить первый элемент, вы можете использовать .iloc:

print(grouped_df.iloc[0])

Результат:

longs          42.906921
lats           -8.511146
value_count    10.000000
Name: 0, dtype: float64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...