Python Pandas TypeError:按组最大计算的数据类型的转换函数无效
我正在从R转换到python,这是一个相对较新的版本 我正试图完成一项相当简单的任务,稍后再做一些复杂的事情 我正在尝试按组获取最大值,在本例中,组为“symbol”,并使用“ClosePrice”列中的最大值创建一个新列 我正在使用groupby和transform:Python Pandas TypeError:按组最大计算的数据类型的转换函数无效,python,pandas,typeerror,pandas-groupby,Python,Pandas,Typeerror,Pandas Groupby,我正在从R转换到python,这是一个相对较新的版本 我正试图完成一项相当简单的任务,稍后再做一些复杂的事情 我正在尝试按组获取最大值,在本例中,组为“symbol”,并使用“ClosePrice”列中的最大值创建一个新列 我正在使用groupby和transform: proccessing_data['Max'] = proccessing_data.groupby('Symbol').transform(lambda x: x.ClosePrice.max(), axis =1) pro
proccessing_data['Max'] = proccessing_data.groupby('Symbol').transform(lambda x: x.ClosePrice.max(), axis =1)
proccessing_data['RSI'] = proccessing_data.groupby('Symbol').transform(lambda x: talib.RSI(x["ClosePrice"], timeperiod=14), axis =1)
并返回以下错误:
TypeError: Transform function invalid for data types
我的最终目标实际上是在transform中使用函数:
proccessing_data['Max'] = proccessing_data.groupby('Symbol').transform(lambda x: x.ClosePrice.max(), axis =1)
proccessing_data['RSI'] = proccessing_data.groupby('Symbol').transform(lambda x: talib.RSI(x["ClosePrice"], timeperiod=14), axis =1)
但这会返回相同的错误
为了便于参考,我使用:
proccessing_data$RSI_SMA <- ave(proccessing_data$ClosePrice, proccessing_data$Symbol,
FUN = function(x) RSI(x,n = 14, maType = "SMA"))
processing_data$RSI_SMA在使用transform
之前,您需要指定要在分组数据帧上操作的列,因为每个列分别传递给transform
函数,请参见,您不能在lambda函数中执行x.ClosePrice
;对于您的情况:
proccessing_data['Max'] = proccessing_data.groupby('Symbol').ClosePrice.transform('max')
# specify the column to transform here ^^^^^^^^^^
proccessing_data['RSI'] = proccessing_data.groupby('Symbol').ClosePrice.transform(lambda x: talib.RSI(x, timeperiod=14))
# specify the column to transform here ^^^^^^^^^^
在使用transform
之前,您需要指定要在分组数据帧上操作的列,因为每个列分别传递给transform
函数,请参见,您不能在lambda函数中执行x.ClosePrice
;对于您的情况:
proccessing_data['Max'] = proccessing_data.groupby('Symbol').ClosePrice.transform('max')
# specify the column to transform here ^^^^^^^^^^
proccessing_data['RSI'] = proccessing_data.groupby('Symbol').ClosePrice.transform(lambda x: talib.RSI(x, timeperiod=14))
# specify the column to transform here ^^^^^^^^^^
这就是问题所在,谢谢!这就是问题所在,谢谢!