在python中是否有apply的实现

时间:2014-01-23 08:32:40

标签: python python-2.7

python中是否有apply的实现?有人可以用简单的函数给出一个例子吗?

我已经尝试过它会抛出错误

dfsub.apply(dfsub,function(x){sum(x))

其中dfsub是一个数据框,有两列a和c,它有整数值,我想知道每一行的总和?

3 个答案:

答案 0 :(得分:4)

只需通过sum功能:

>>> import pandas as pd
>>> dfsub = pd.DataFrame({'a': [1,2,3,4], 'c': [4,5,6,7]})
>>> dfsub
   a  c
0  1  4
1  2  5
2  3  6
3  4  7
>>> dfsub.apply(sum)
a    10
c    22

>>> dfsub.apply(sum, axis=1)
0     5
1     7
2     9
3    11
dtype: int64

答案 1 :(得分:1)

您似乎尝试使用Javascript语法定义函数" in-line":

dfsub.apply(function(x){sum(x)})

(注意,由于我们正在调用方法,dfsub已经隐式传递。)

即使在Python中有效,也必须明确return值。但是我们没有带括号的内联函数。相反,我们有lambda s:

dfsub.apply(lambda x: sum(x))

这是表达式,这就是没有return的原因。

那就是说,在目前的情况下,没有必要这样做。 sum已经成为我们需要通过的事情,如@fattru的回答所示。

答案 2 :(得分:0)

不完全确定apply应该做什么,但我认为您正在寻找map功能。

In [1]: dfsub = [(1, 2), (3, 4), (5, 6)]
In [2]: map(sum, dfsub)
Out[2]: [3, 7, 11]