我有以下数据帧:
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'
因此,虽然我有一个解决方案,但基于索引创建一个新变量似乎有点多余。是否可以在不改变原始数据帧的情况下创建所需的方法列表
目前没有回答
相关问题 更多 >
编程相关推荐