将数据框按列分组,并在另一列中压缩字符串

时间:2019-05-30 17:28:08

标签: python dataframe

我知道这应该很容易,但是这让我发疯了...

我正在尝试将数据框转换为分组的数据框。

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))

将df变成对象吗?

1 个答案:

答案 0 :(得分:1)

使用此代码

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

reset_index()将使您的group by列从索引中移出,并将其作为列返回到数据框,并创建一个新的整数索引。