【问题标题】:Pandas TypeError: Transform function invalid for data types on max calculation by groupPandas TypeError:转换函数对按组进行最大计算的数据类型无效
【发布时间】:2018-11-26 13:41:29
【问题描述】:

我正在从 R 和相对较新的 Python 切换。

我正在尝试完成一个非常简单的任务,稍后会变得更复杂。

我正在尝试按组获取最大值,在这种情况下,组为“符号”,并使用“ClosePrice”列中的最大值创建一个新列。

我正在使用 groupby 和转换:

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"))

任何帮助将不胜感激,谢谢!

【问题讨论】:

    标签: python pandas typeerror pandas-groupby


    【解决方案1】:

    在使用transform之前需要指定对分组数据框的哪一列进行操作,因为每一列都是单独传递给transform函数的,见the docs,不能在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 ^^^^^^^^^^
    

    【讨论】:

    • 这是问题,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-24
    • 1970-01-01
    • 1970-01-01
    • 2017-10-06
    • 1970-01-01
    • 2021-08-31
    相关资源
    最近更新 更多