我有一个名为busyness
的Series对象,它是从DataFrames以下列方式创建的:
entries = last.ENTRIES - first.ENTRIES
exits = last.EXITS - first.EXITS
busyness = entries + exits
其中last
和first
是带有ENTRIES列的数据框。以下是busyness
的样子:
ipdb> type(busyness)
<class 'pandas.core.series.Series'>
ipdb> busyness.head(20)
CA UNIT SCP STATION
A002 R051 02-00-00 59 ST 2468
02-00-01 59 ST 1764
02-03-00 59 ST 3063
02-03-01 59 ST 3952
02-03-02 59 ST 3576
02-03-03 59 ST 3168
02-03-04 59 ST 2563
02-03-05 59 ST 2948
02-03-06 59 ST 2350
02-05-00 59 ST 0
02-05-01 59 ST 0
02-06-00 59 ST 2503
A006 R079 00-00-00 5 AV/59 ST 4321
00-00-01 5 AV/59 ST 2407
00-00-02 5 AV/59 ST 1687
00-00-03 5 AV/59 ST 1272
00-00-04 5 AV/59 ST 1352
00-03-00 5 AV/59 ST 1834
00-03-01 5 AV/59 ST 2753
00-03-02 5 AV/59 ST 4192
dtype: int64
我需要执行聚合,类似于以下内容:
ipdb> busyness.groupby('STATION').sum()
*** KeyError: 'STATION'
如何使用Series对象执行此操作。我以前常常处理DataFrames。感谢您提供任何帮助!
答案 0 :(得分:2)
由于MultiIndex级别具有名称,因此您可以在调用groupby
时按名称指定级别:
busyness.groupby(level='STATION').sum()
答案 1 :(得分:0)
由于我们有多级索引,因此在构建reset_index
时需要调用DataFrame
,如下所示:
ipdb> import pandas as pd
ipdb> df = pd.DataFrame(busyness).reset_index()
ipdb> summed = df.groupby('STATION').sum()
ipdb> summed.head()
0
STATION
1 AV 48949
103 ST 51262
103 ST-CORONA 32165
104 ST 5612
110 ST 21252
答案 2 :(得分:0)
您可以使用groupby
的Multiindex
级别python
从0
开始,level=3
}:
summed = df.groupby(level=3).sum()