groupby()之后数据帧中索引值的平均值

2024-09-27 09:21:47 发布

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

我有以下数据帧:

myDF = pd.DataFrame({'quarter':['Q1','Q2','Q3','Q4','Q1','Q2','Q3','Q4','Q1','Q2','Q3','Q4'],
                     'year':[2018,2018,2018,2018,2019,2019,2019,2019,2020,2020,2020,2020]})

这看起来像:

   quarter  year
0       Q1  2018
1       Q2  2018
2       Q3  2018
3       Q4  2018
4       Q1  2019
5       Q2  2019
6       Q3  2019
7       Q4  2019
8       Q1  2020
9       Q2  2020
10      Q3  2020
11      Q4  2020

我可以计算指数值的平均值:

print(np.mean(myDF.index))
5.5

…但我想列出每年的平均指数值

我可以基于索引值创建一个新变量,并按如下方式找到这些值的平均值:

myDF['idx'] = myDF.index
print(myDF.groupby('year')['idx'].apply(list))
print(myDF.groupby('year')['idx'].apply(np.mean).tolist())

制作:

year
2018      [0, 1, 2, 3]
2019      [4, 5, 6, 7]
2020    [8, 9, 10, 11]
Name: idx, dtype: object


[1.5, 5.5, 9.5]

但是,我似乎无法直接操纵索引值。我已尝试将上述各种版本应用于DataFrameGroupBy对象,但出现以下错误:

AttributeError: 'DataFrameGroupBy' object has no attribute 'index'

因此,虽然我有一个解决方案,但基于索引创建一个新变量似乎有点多余。是否可以在不改变原始数据帧的情况下创建所需的方法列表


Tags: indexnpmeanyear平均值printgroupbyidx

热门问题