Python Dataframe使用groupby跨扩展/运行范围应用函数

Python Dataframe使用groupby跨扩展/运行范围应用函数,python,Python,使用quantopian max_drawdown函数,我试图在不断扩大的数据范围内计算max_drawdown,因此我期望有多个不同的输出 from empyrical import max_drawdown import pandas as pd returns = pd.DataFrame({ 'value_date' : ['2018-01-31', '2018-02-28', '2018-03-31','2018-04-30', '2018-05-31', '2018

使用quantopian max_drawdown函数,我试图在不断扩大的数据范围内计算max_drawdown,因此我期望有多个不同的输出

from empyrical import max_drawdown
import pandas as pd

returns = pd.DataFrame({
        'value_date' : ['2018-01-31', '2018-02-28', '2018-03-31','2018-04-30', '2018-05-31', '2018-06-30', 
                        '2018-01-31', '2018-02-28', '2018-03-31','2018-04-30', '2018-05-31', '2018-06-30'],
        'code_id' :  ['AUD','AUD','AUD','AUD','AUD','AUD', 
                      'USD','USD','USD','USD','USD','USD'],
        'gross_return': [.01, .02, .03, -.4, -.06, -.02, 
                         .06, .8, .9, .4, -1.06, .03],
        })
这段代码非常接近,但它没有扩展/运行,而是使用整个范围的数据帧(按代码id分组)

我尝试了以下方法

returns['max_drawdown'] = returns.groupby(['code_id'])['gross_return'].expanding().transform(lambda x: max_drawdown(x))
但是获取'AttributeError:'ExpandingGroupby'对象没有属性'transform'

有什么想法吗

函数库

更新

这很有效

print(returns.groupby(['code_id'])['gross_return'].expanding().apply(lambda x: max_drawdown(x)))
但是这并不
TypeError:插入列的索引与框架索引不兼容

returns['max_drawdown'] = returns.groupby(['code_id'])['gross_return'].expanding().apply(lambda x: max_drawdown(x))
returns['max_drawdown'] = returns.groupby(['code_id'])['gross_return'].expanding().apply(lambda x: max_drawdown(x))