pandas 将DataFrame中的一列转换为列表,并将另一列转换为设置

rjee0c15  于 2023-01-15  发布在  其他
关注(0)|答案(1)|浏览(140)

我想将 Dataframe 中的一些列转换为list,将一些列转换为set,它们具有相似的名称。给定的 Dataframe df:

Name    id     other           list
0   ben  00005     abc      [1000, A, 90]
1  alex  00006     gf       [3000, B, 80]
2  linn  00007     jgj      [600, C, 55]
3  luke  00009     gg       [5000, D, 88]
4  alex  00001     gf      [7000, R, 98]
5  ben  00002      abc      [9000, S, 28]
6  ben   00003     abc      [5000, T, 48]

所需输出df1:

Name    id                   other           list
0   ben  {00005, 0002,0003}     abc      [[1000, A, 90],[9000, S, 28],[5000, T, 48]]
1  alex  {00006,0001}           gf       [3000, B, 80], [7000, R, 98]
2  linn  {00007}                jgj      [600, C, 55]
3  luke  {00009}                gg       [5000, D, 88]
gcuhipw9

gcuhipw91#

您可以将.groupby().agg()一起使用:

df.groupby("Name", as_index=False).agg({"id": set, "other": "first", "list": list})

这将输出:

Name                     id other                                           list
0  alex         {00001, 00006}    gf                 [[3000, B, 80], [7000, R, 98]]
1   ben  {00005, 00003, 00002}   abc  [[1000, A, 90], [9000, S, 28], [5000, T, 48]]
2  linn                {00007}   jgj                                 [[600, C, 55]]
3  luke                {00009}    gg                                [[5000, D, 88]]

相关问题