在熊猫中使用字典应用多个聚合函数

时间:2019-06-01 18:07:36

标签: python pandas dictionary pandas-groupby deprecation-warning

我离开熊猫已有一段时间了,现在我收到了弃用警告和我以前认为可行的代码错误,但是我对现在如何使它困惑不解。

我的数据框如下:

                Station ELK         ERC         GLD
Run Year    Month   Day         
0   1950    1       1   19.426124   14.534724   29.322430
2                       14.403643   9.363476    22.289044
3                       11.938533   14.142986   11.236523
4                       38.449175   42.680089   44.475284
5                        5.261529   5.010876    5.481872
6                        0.000000   0.000000    0.000000

我过去所做的是创建一个字典,其中包含成对的新列名称以及用于填充它的相应聚合函数。

p_agg = {('Total Monthly Precipitation', 'mm'): 'sum'
         ('95th Percentile', 'mm'): lambda x: np.percentile(x, 95),
         ('99th Percentile', 'mm'): lambda x: np.percentile(x, 99)}

然后我将根据索引对数据进行分组并应用聚合:

df.groupby(['Run', 'Year', 'Month']).agg(p_agg).mean(level=['Run', 'Month'])

现在我得到一个FutureWarning和一个关键错误:

  

C:\ Anaconda \ lib \ site-packages \ pandas \ core \ groupby \ groupby.py:4656:   FutureWarning:不建议将dict与重命名一起使用,并且将   在以后的版本中删除

KeyError                                  Traceback (most recent call last)
C:\Anaconda\lib\site-packages\pandas\core\indexes\base.py in get_loc(self, key, method, tolerance)
   3077             try:
-> 3078                 return self._engine.get_loc(key)
   3079             except KeyError:

pandas\_libs\index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas\_libs\index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas\_libs\hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()

pandas\_libs\hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: ('Total Monthly Precipitation', 'mm')

以前,输出将是一个数据帧,其中包含用聚合字典的键标记的列以及与这些列相对应的聚合数据。

我是在这里做错什么,还是自从上次运行此代码以来发生了更改?我可能已经修改了一些内容,所以希望这不会引起错误,但是我基本上使用的方式与过去相同。如果不建议使用此方法,那么还有什么替代方法?

理想情况下,我想申请使用字典来应用多个聚合函数,因为这会使名称与函数保持一致,并使以后绘制更为容易。

0 个答案:

没有答案