Python 熊猫如何解析df.agg中由name指定的函数
我正在学习熊猫和Numpy,目前正在进行教程的学习。我对Python完全是新手,所以这可能是一个基本的初学者问题 给定此数据帧:Python 熊猫如何解析df.agg中由name指定的函数,python,pandas,Python,Pandas,我正在学习熊猫和Numpy,目前正在进行教程的学习。我对Python完全是新手,所以这可能是一个基本的初学者问题 给定此数据帧: df = pd.DataFrame(np.random.randn(4, 3), columns=['A', 'B', 'C'], index=pd.date_range('1/1/2000', periods=4)) df.iloc[3:7] = np.nan 我无法解释以下结果之间的差异: 电话1: df.agg(su
df = pd.DataFrame(np.random.randn(4, 3), columns=['A', 'B', 'C'],
index=pd.date_range('1/1/2000', periods=4))
df.iloc[3:7] = np.nan
我无法解释以下结果之间的差异:
电话1:
df.agg(sum)
#Result:
A NaN
B NaN
C NaN
dtype: float64
电话2:
df.agg('sum')
#Result:
A -1.776752
B -2.070156
C -0.124162
dtype: float64
df.agg('sum')
的结果与df.agg(np.sum)
或df.sum()
的结果相同。我希望df.agg('sum')
产生与df.agg(sum)
相同的结果
Pandas是否有特殊的逻辑来解析这些函数,以便它更喜欢
np.sum
(或运行df.sum
)而不是内置的sum
?在您链接到的文档中,它说:
还可以将命名方法作为字符串传递
因此字符串在数据帧(或序列,如果您在序列上调用
agg
)上解析为方法名。在您链接到的文档中,它说:
还可以将命名方法作为字符串传递
因此字符串被解析为数据帧上的方法名(或者序列,如果你在序列上调用
agg
)你的意思是我应该把“方法”理解为DataFrame
或者Series
用df.function\u name()调用的函数吗?(我认为方法与函数的含义完全相同)。这可能就是我所说的细微差别missing@ernest_k:Python中的方法是绑定到对象的函数。因此,如果你正在做foo.bar()
,那么bar
是foo
的一种方法。这也意味着agg('some pandas\u func')
与agg(pd.PandasObject.same\u pandas\u func)
=df.agg(pd.DataFrame.sum)
=df.agg('sum')
。用字符串调用只是到达属于对象的函数的简写。您的意思可能是我应该将“方法”理解为使用df.function\u name()调用的DataFrame
或Series
函数?(我认为方法与函数的含义完全相同)。这可能就是我所说的细微差别missing@ernest_k:Python中的方法是绑定到对象的函数。因此,如果你正在做foo.bar()
,那么bar
是foo
的一种方法。这也意味着agg('some pandas\u func')
与agg(pd.PandasObject.same\u pandas\u func)
=df.agg(pd.DataFrame.sum)
=df.agg('sum')
。使用字符串调用只是到达属于对象的函数的简写。