如何判断一个函数字符串是否是可用于.agg() 的有效Pandas函数字符串?

编程语言 2026-07-08

我有一个包装器,最终会调用pandas.DataFrame.groupby().agg(),或者pandas.DataFrame.groupby()[colname].agg()。我想直接查询pandas模块,以获取字符串函数的列表,或者最接近的做法是检查它们是否有效。请给出比仅从文档中抓取该列表更好的方案——这正是我目前实现的方式。

我知道文档里有这个列表,地址在:https://pandas.pydata.org/pandas-docs/stable//user_guide/groupby.html#built-in-aggregation-methods

解决方案

如果你不怕试错,可以把所有numpy函数以及DataFrame的所有属性一并传入,看看哪些能用上:

import pandas as pd
import numpy as np

valid = []
invalid = []

simple_df = pd.DataFrame([['Test',1]], columns=['ColA','ValueA'])

for f in np.__all__:
    try:
        simple_df.groupby('ColA')['ValueA'].agg(str(f).replace('__',""))
        valid.append(str(f).replace('__',""))
    except:
        invalid.append(str(f).replace('__',""))

for f in list({attr: getattr(simple_df, attr) for attr in dir(simple_df)}.keys()):
    try:
        simple_df.groupby('ColA')['ValueA'].agg(str(f))
        valid.append(str(f))
    except:
        invalid.append(str(f))    

print(valid)

不太清楚这样做的初衷是什么,有些numpy的函数可能不会按你期望的方式工作。而且我也不确定是否有人愿意执行:

df.groupby('ColA')['ValueA'].agg('_dir_deletions')
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章