Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pandas TypeError:按组最大计算的数据类型的转换函数无效_Python_Pandas_Typeerror_Pandas Groupby - Fatal编程技术网

Python Pandas TypeError:按组最大计算的数据类型的转换函数无效

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

我正在从R转换到python,这是一个相对较新的版本

我正试图完成一项相当简单的任务,稍后再做一些复杂的事情

我正在尝试按组获取最大值,在本例中,组为“symbol”,并使用“ClosePrice”列中的最大值创建一个新列

我正在使用groupby和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)
并返回以下错误:

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 ^^^^^^^^^^

这就是问题所在,谢谢!这就是问题所在,谢谢!