在panda中使用groupby()时为索引指定名称



我有多年的天气数据。在这篇文章中,我试图找到每个月温度的长期平均值,我使用以下方法实现了这一点。

mh3 = mh3.groupby([mh3.index.month, mh3.index.day])
mh3 = mh3[['dry_bulb_tmp_mean', 'global_horiz_radiation']].mean()

然而,在这样做的过程中,我得到了数据帧的两个索引(月份和日期都很好(。问题是这两个索引列都分配了名称日期。有没有手动添加名称的方法?当我需要按月进行一些数据分析时,这会在稍后的代码中造成问题。谢谢

使用分组的Seriesname将成为Index级别的名称,因此在分组器中重命名它们。

mh3 = mh3.groupby([mh3.index.month.rename('month'), mh3.index.day.rename('day')])

或者,如果您不想键入太多,可以使用列表理解、getattr和重命名属性来创建分组。

import pandas as pd
df = pd.DataFrame(index=pd.date_range('2010-01-01', freq='4H', periods=10), 
data={'col1': range(10)})
grpr = [getattr(df.index, attr).rename(attr) for attr in ['month', 'day']]
df.groupby(grpr).sum()
#           col1
#month day      
#1     1      15
#      2      30

最新更新