Pandas如何判断自定义聚合函数的有效性?
Pandas如何检测聚合函数是否生成合法聚合值?
我尝试用一个明显错误的函数计算DataFrame中特征的出现频率(我清楚这个函数不具备聚合能力):
def virus_p(count): return count / count.sum()
我不是要解决函数本身的问题,而是想弄明白Pandas是怎么识别出该函数存在问题的。以下是最小复现示例:
def virus_p(count): return count / count.sum() df = pd.DataFrame([ [1, 10], [1, 2], [2, 5], ]) df.columns = ['virus', 'days'] df.groupby('virus')['days'].agg(virus_p)
运行上述代码会报错**"Aggregation function must produce aggregated value"**,我曾在函数中加入print(count)语句,但报错发生在打印操作之前,这说明Pandas在调用函数前就已经检测到了问题。
我的疑问是:Python是动态类型语言,Pandas是如何提前知晓函数的输出类型的?它内置了类似mypy的类型检查器吗?
更新:我在Google Colab中无法复现该报错,但核心问题依然存在。根据Pandas文档,聚合函数需要能够处理DataFrame,或者可以用于DataFrame.apply(前者处理DataFrame对象,后者处理Series对象)。
内容的提问来源于stack exchange,提问作者Julian Coffee
相关产品推荐
相关产品推荐

