2024-09-30 16:29:08 发布
网友
我试图将Listag在SQL中的功能应用到pandas中
为什么下面的工作
DataFrame.groupby.agg(list)
但以下情况却并非如此
DataFrame.groupby.agg('list')
我正在转换以下数据:
到
我查看了pandas源代码,发现至少在聚合pandas系列时,字符串函数名通过调用
if isinstance(func, str): return getattr(self, func)(*args, **kwargs)
其中self是SeriesGroupBy的实例,它是GroupBy的子类。GroupBy类有许多方法可用于聚合(包括count、mean、median等)^另一方面,{}当然不是GroupBy的方法,而是一个内置的Python函数,因此调用getattr()时找不到它。我假设DataFrameGroupBy也是这样,因为它也是GroupBy的一个子类
self
SeriesGroupBy
GroupBy
count
mean
median
getattr()
DataFrameGroupBy
以类似的方式,.agg()在作为字符串提供时将无法使用任何用户定义的函数名
.agg()
有关提供给.agg()的所有可用字符串的列表,请查看this article in the pandas documentation
如果.agg()方法的参数是函数的名称(即不是名称为的字符串),则它必须是Python的已知名称,i。E标准、导入或您自己的函数。 (在您的例子中,list是标准的Python函数。)
list
如果.agg()方法的参数是字符串,则
.list()
numpy.list()
如您所见,如果参数是一个字符串,Pandas将忽略Python已知的函数
我查看了pandas源代码,发现至少在聚合pandas系列时,字符串函数名通过调用
其中}当然不是
self
是SeriesGroupBy
的实例,它是GroupBy
的子类。GroupBy
类有许多方法可用于聚合(包括count
、mean
、median
等)^另一方面,{GroupBy
的方法,而是一个内置的Python函数,因此调用getattr()
时找不到它。我假设DataFrameGroupBy
也是这样,因为它也是GroupBy
的一个子类以类似的方式,
.agg()
在作为字符串提供时将无法使用任何用户定义的函数名有关提供给
.agg()
的所有可用字符串的列表,请查看this article in the pandas documentation如果
.agg()
方法的参数是函数的名称(即不是名称为的字符串),则它必须是Python的已知名称,i。E标准、导入或您自己的函数。(在您的例子中,
list
是标准的Python函数。)如果
.agg()
方法的参数是字符串,则GroupBy
类的方法(在您的例子中,没有
GroupBy
类的.list()
方法)numpy.list()
)如您所见,如果参数是一个字符串,Pandas将忽略Python已知的函数
相关问题 更多 >
编程相关推荐