首页 > 解决方案 > Python Pandas:group by 正在删除列

问题描述

我的问题是在 group by 之后我留下了其他列而不是函数和索引。我想在 groupby 和 index 之后获取所有列。我该如何解决?

编码:

import pandas as pd


df = pd.read_excel('C:/Users/ja/Inne/Desktop/my.xlsx')
df2 = df.groupby('lokalny_id')['url'].agg(','.join)
df2 = pd.DataFrame(df2)

我的数据框:

    lokalny_id  url year    fid status
0   1234    73678_919317_M-33-35-D-a-1-4.tif    2022    123 w.
1   12  73678_919385_M-33-23-A-r-6-2.tif    2023    2   z.
2   1234    73678_919317_M-33-35-D-a-1-4.tif    2022    123 w.
3   13  73678_919385_M-33-23-O-k-2-3.tif    2020    3   z.
4   1234    73678_919317_M-33-35-D-a-1-4.tif    2022    123 w.
5   15  73678_919385_M-33-23-B-z-1-7.tif    2012    5   z.
6   17  73678_919385_M-33-23-D-c-2-9.tif    2013    6   o.

分组后: 在此处输入图像描述

标签: pythonpandas

解决方案


您应该将不想聚合的所有列添加到索引中,并在完成后重置索引:

df2 = df.groupby(['lokalny_id', 'year', 'fid'])['url'].agg(','.join).reset_index()

它按预期给出:

   lokalny_id  year  fid                                                url
0          12  2023    2                   73678_919385_M-33-23-A-r-6-2.tif
1          13  2020    3                   73678_919385_M-33-23-O-k-2-3.tif
2          15  2012    5                   73678_919385_M-33-23-B-z-1-7.tif
3          17  2013    6                   73678_919385_M-33-23-D-c-2-9.tif
4        1234  2022  123  73678_919317_M-33-35-D-a-1-4.tif,73678_919317_...

推荐阅读