Pandas 类型错误:转换函数对按组计算的最大数据类型无效



我正在从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 ^^^^^^^^^^

最新更新