如何判断一个函数字符串是否是可用于.agg() 的有效Pandas函数字符串?
我有一个包装器,最终会调用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导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。