按州分组聚合列

2024-04-23 19:49:19 发布

您现在位置:Python中文网/ 问答频道 /正文

在dataframe中使用groupby时,是否可以将特定列的结果收集为list?你知道吗

我不确定这个细节在这里是否有意义,但是在PostgreSQL中有一个函数array_agg(columnname)来实现同样的功能。你知道吗

我还尝试在API文档中查找细节,但没有成功。你知道吗

train
Out[6]: 
    TripType  VisitNumber Weekday  ScanCount  DepartmentDescription
1         30            7  Friday          1                  SHOES
2         30            7  Friday          1          PERSONAL CARE
3         26            8  Friday          2  PAINT AND ACCESSORIES
4         26            8  Friday          2  PAINT AND ACCESSORIES
5         26            8  Friday          2  PAINT AND ACCESSORIES
6         26            8  Friday          1  PAINT AND ACCESSORIES
7         26            8  Friday          1  PAINT AND ACCESSORIES
8         26            8  Friday          1  PAINT AND ACCESSORIES
9         26            8  Friday         -1  PAINT AND ACCESSORIES
10        26            8  Friday          1            DSD GROCERY
11        26            8  Friday          2  PAINT AND ACCESSORIES
12        26            8  Friday          1  MEAT - FRESH & FROZEN
13        26            8  Friday          1  PAINT AND ACCESSORIES
14        26            8  Friday         -1  PAINT AND ACCESSORIES
15        26            8  Friday          2  PAINT AND ACCESSORIES
16        26            8  Friday          1  PAINT AND ACCESSORIES
17        26            8  Friday          1  PAINT AND ACCESSORIES
18        26            8  Friday          2                  DAIRY
19        26            8  Friday          1      PETS AND SUPPLIES

train.groupby(['VisitNumber','Weekday','TripType']).count()
Out[7]: 
                              ScanCount  DepartmentDescription
VisitNumber Weekday TripType                                  
7           Friday  30                2                      2
8           Friday  26               17                     17

我是说第一行的结果如下

                              ScanCount  DepartmentDescription
VisitNumber Weekday TripType                                  
7           Friday  30                2                     [SHOES,PERSONAL CARE]

数据集:

{'DepartmentDescription': {1: 'SHOES',
  2: 'PERSONAL CARE',
  3: 'PAINT AND ACCESSORIES',
  4: 'PAINT AND ACCESSORIES',
  5: 'PAINT AND ACCESSORIES'},
 'ScanCount': {1: 1, 2: 1, 3: 2, 4: 2, 5: 2},
 'TripType': {1: 30, 2: 30, 3: 26, 4: 26, 5: 26},
 'VisitNumber': {1: 7, 2: 7, 3: 8, 4: 8, 5: 8},
 'Weekday': {1: 'Friday', 2: 'Friday', 3: 'Friday', 4: 'Friday', 5: 'Friday'}}

Tags: andtrain细节personalgroupbypaintcareweekday
1条回答
网友
1楼 · 发布于 2024-04-23 19:49:19

IIUC您需要以下内容:

In [248]:
df.groupby(['VisitNumber','Weekday','TripType'])['DepartmentDescription'].apply(list)

Out[248]:
VisitNumber  Weekday  TripType
7            Friday   30                                     [SHOES, PERSONAL CARE]
8            Friday   26          [PAINT AND ACCESSORIES, PAINT AND ACCESSORIES,...
Name: DepartmentDescription, dtype: object

相关问题 更多 >