熊猫如何解析df.agg中由名称指定的功能

时间:2018-11-22 18:34:57

标签: python pandas

我正在学习Pandas和Numpy,目前正在学习本教程的this section。我完全不熟悉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

我无法解释df.agg的以下结果之间的区别:

电话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)相同的结果。

熊猫是否具有特殊的逻辑来解析这些功能,以使其更喜欢np.sum(或运行df.sum)而不是内置的sum

1 个答案:

答案 0 :(得分:2)

在链接到的文档中,内容为:

  

您还可以将命名方法作为字符串传递。

因此,字符串在DataFrame(或Series(如果在Series上调用library(arsenal) library(data.table) # dummy data set.seed(1) data = c(LETTERS, NA) dt = data.table(Flag_A=sample(data), Flag_B = sample(data), C=sample(data), D=sample(data), Flag_E=sample(data)) dt = rbind(NA, dt) # All-NA/Any-NA check columns_to_check = names(dt)[grep('Flag', names(dt))] dt[, AllNA:=allNA(.SD), by=1:nrow(dt), .SDcols = columns_to_check] dt[, AnyNA:=anyNA(.SD), by=1:nrow(dt), .SDcols = columns_to_check] )上作为方法名称解析。