我离开熊猫已有一段时间了,现在我收到了弃用警告和我以前认为可行的代码错误,但是我对现在如何使它困惑不解。
我的数据框如下:
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')
以前,输出将是一个数据帧,其中包含用聚合字典的键标记的列以及与这些列相对应的聚合数据。
我是在这里做错什么,还是自从上次运行此代码以来发生了更改?我可能已经修改了一些内容,所以希望这不会引起错误,但是我基本上使用的方式与过去相同。如果不建议使用此方法,那么还有什么替代方法?
理想情况下,我想申请使用字典来应用多个聚合函数,因为这会使名称与函数保持一致,并使以后绘制更为容易。