熊猫 getattr(df, "mean") 不像 df.mean() 那样工作

con*_*cia 0 python numpy dynamic pandas

当我使用getattr()动态访问 Pandas 数据帧或系列的平均值时,它返回一个 Series.mean 对象。但是,当我df.mean()用来访问平均值时,它返回一个浮点数。

为什么不getattr()返回与普通方法相同的东西?

最小的可重现代码:

import pandas as pd
import numpy as np

s = pd.Series(np.random.randn(5))
print(getattr(s, "mean"))
>>> <bound method Series.mean of 
>>> 0    1.158042
>>> 1   -0.586821
>>> 2   -1.976764
>>> 3    1.722072
>>> 4    1.129570
print(s.mean())
>>> dtype: float64>
>>> 0.28921963496328584
Run Code Online (Sandbox Code Playgroud)

我曾经dir(getattr(s, "mean"))试图获得平均值,但无法弄清楚哪个属性(如果有)会让我获得浮点平均值。

Sah*_*iya 5

由于 getattr 返回的属性是可调用的,请尝试:

print(getattr(s, "mean")())
Run Code Online (Sandbox Code Playgroud)