我正在从R切换到python,相对较新。
我正在尝试完成一项非常简单的任务,稍后会变得更加复杂。
我正在尝试按组获取最大值,在这种情况下,组是"符号",并从"收盘价"列中创建一个具有最大值的新列。
我正在使用分组和转换:
proccessing_data['Max'] = proccessing_data.groupby('Symbol').transform(lambda x: x.ClosePrice.max(), axis =1)
并返回以下错误:
TypeError: Transform function invalid for data types
我的最终目标实际上是在转换中使用函数:
proccessing_data['RSI'] = proccessing_data.groupby('Symbol').transform(lambda x: talib.RSI(x["ClosePrice"], timeperiod=14), axis =1)
但这会返回相同的错误。
对于 R 中的参考,我使用:
proccessing_data$RSI_SMA <- ave(proccessing_data$ClosePrice, proccessing_data$Symbol,
FUN = function(x) RSI(x,n = 14, maType = "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 ^^^^^^^^^^