Назначьте людей, которые имеют разные места в группе - PullRequest
0 голосов
/ 24 марта 2020

У меня есть pandas фрейм данных с людьми, которые живут в разных местах (широта, долгота, номер этажа). Я хотел бы назначить 3 человек в группу. Группы должны быть пронумерованы от 1 до n. Важно: Эти 3 человека имеют разные местоположения по широте, долготе и полу. Это означает, что в конце этого процесса каждый человек относится к одной конкретной группе. Мой фрейм данных имеет кратность 9 (например, 18 человек).

Пример:

Вот мой фрейм данных:

array_data=([[ 50.56419  ,   8.67667  ,   2.       , 160.       ],
   [ 50.5740356,   8.6718179,   1.       ,   5.       ],
   [ 50.5746321,   8.6831284,   3.       , 202.       ],
   [ 50.5747453,   8.6765588,   4.       , 119.       ],
   [ 50.5748992,   8.6611471,   2.       , 260.       ],
   [ 50.5748992,   8.6611471,   3.       , 102.       ],
   [ 50.575    ,   8.65985  ,   2.       , 267.       ],
   [ 50.5751   ,   8.66027  ,   2.       ,   7.       ],
   [ 50.5751   ,   8.66027  ,   2.       ,  56.       ],
   [ 50.57536  ,   8.67741  ,   1.       , 194.       ],
   [ 50.57536  ,   8.67741  ,   1.       , 282.       ],
   [ 50.5755255,   8.6884584,   0.       , 276.       ],
   [ 50.5755273,   8.674282 ,   3.       , 167.       ],
   [ 50.57553  ,   8.6826   ,   2.       , 273.       ],
   [ 50.5755973,   8.6847492,   0.       , 168.       ],
   [ 50.5756757,   8.6846139,   4.       , 255.       ],
   [ 50.57572  ,   8.65965  ,   0.       ,  66.       ],
   [ 50.57591  ,   8.68175  ,   1.       , 187.       ]])

all_persons = pd.DataFrame(data=array_data) # convert back to dataframe

all_persons.rename(columns={0: 'latitude', 1: 'longitude', 2:'floor', 3:'id'}, inplace=True) # rename columns

enter image description here

Как мне создать этот столбец? Как видите, мой подход не работает правильно.

1 Ответ

1 голос
/ 24 марта 2020
temp = ()
temp += (pd.concat([df.loc[users group 1]], keys=[1], names=['group']),)
temp += (pd.concat([df.loc[users group 2]], keys=[2], names=['group']),)
temp += (pd.concat([df.loc[users group 3]], keys=[3], names=['group']),)

df = pd.concat(temp)

Конечно, вы можете сделать это в al oop и найти нужных пользователей более элегантным способом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...