“使用系列的字典进行汇总”的替代方法是什么?

时间:2019-05-28 14:04:59

标签: python pandas dictionary series

我使用了agg函数来计算按STNAME分组的CENSUS2010POP的平均值。在agg函数中,我使用了一个带有{}的字典来为平均值命名新列(以下代码中的详细信息) 该代码运行良好,但是Jupyter Notebook给了我警告

FutureWarning:对系列使用dict进行汇总 已不推荐使用,并将在以后的版本中删除

我想知道什么是新的方式。

我正在从Anaconda3安装的最新的Jupyter Notebook上运行python 3,

我现在使用的方法是这样的:

df = pd.read_csv('census.csv')
df = (df.where(df['SUMLEV']==50)
     .dropna()
     .set_index('STNAME')
     .groupby(level = 0)['CENSUS2010POP']
     .agg({'avg' : np.average}) )

df

但是不建议使用此方法,并且会在将来如警告所述将其删除

结果应该是这样的(这是上面代码的结果)

                avg
STNAME  
Alabama         71339.343284
Alaska          24490.724138
Arizona         426134.466667
Arkansas        38878.906667
California      642309.586207
Colorado        78581.187500
Connecticut     446762.125000
Delaware        299311.333333
...

1 个答案:

答案 0 :(得分:0)

pandas.DataFrame.agg的文档中,agg可以接受函数,列表,str或dict作为输入。因此,您可以直接传递函数np.average并将其作为列标签。

df = pd.read_csv('census.csv')
df = (df.where(df['SUMLEV']==50)
     .dropna()
     .set_index('STNAME')
df['avg'] = df.groupby(level = 0)['CENSUS2010POP']
     .agg(np.average) )