Сгруппируйте фрейм данных по столбцу и объедините строки в другом - PullRequest
0 голосов
/ 30 мая 2019

Я знаю, что это должно быть легко, но это сводит меня с ума ...

Я пытаюсь превратить информационный кадр в сгруппированный.

df выходы:

    Postcode    Borough             Neighbourhood
0   M3A         North York          Parkwoods
1   M4A         North York          Victoria Village
2   M5A         Downtown Toronto    Harbourfront
3   M5A         Downtown Toronto    Regent Park
4   M6A         North York          Lawrence Heights
5   M6A         North York          Lawrence Manor
6   M7A         Queen's Park        Not assigned
7   M9A         Etobicoke           Islington Avenue
8   M1B         Scarborough         Rouge
9   M1B         Scarborough         Malvern
10  M3B         North York          Don Mills North
...

Я хочу создать сгруппированный фрейм данных, где Соседство сгруппировано по Почтовому индексу, а все окрестности станут объединенной строкой Соседств, сгруппированных по Почтовому коду ... что-то вроде:

    Postcode    Borough             Neighbourhood
0   M3A         North York          Parkwoods
1   M4A         North York          Victoria Village
2   M5A         Downtown Toronto    Harbourfront, Regent Park
...

Я пытаюсь использовать:

df.groupby(['Postcode'])['Neighbourhood'].apply(lambda strs: ', '.join(strs))

Но это не возвращает новый фрейм данных ... он выдает тот же оригинальный фрейм данных, когда я использую df после запуска.

если я использую:

df = df.groupby(['Postcode'])['Neighbourhood'].apply(lambda strs: ', '.join(strs))

превращает дф в объект?

1 Ответ

1 голос
/ 30 мая 2019

Используйте этот код

new_df = df.groupby(['Postcode', 'Borough']).agg({'Neighbourhood':lambda x:', '.join(x)}).reset_index()

reset_index() извлечет вашу группу по столбцам из индекса, вернет ее в виде столбца на фрейм данных и создаст новый целочисленный индекс.

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