2014-01-23 30 views
1

python中有沒有apply的實現?有人可以用簡單的功能舉個例子嗎?python中有應用的實現嗎

我已經嘗試過這一點,拋出一個錯誤

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

其中dfsub是有兩列a和c具有整數值數據框一個,我想知道每行的總和?

+1

你試過['map(sum,dfsub)'](http://docs.python.org/2/library/functions.html#map)嗎?否則,你期望'申請'做什麼? –

+2

@tobias_k,好像OP在使用熊貓。參見[pandas.DataFrame.apply](http://pandas.pydata.org/pandas-docs/dev/generated/pandas.DataFrame.apply.html)。 – falsetru

+0

@falsetru你可能是對的,我不知道'熊貓'那麼好。但在這種情況下,問題是措辭不良,因爲OP似乎知道「應用」功能,只是不知道如何使用它。 –

回答

0

不完全確定apply應該做什麼,但我認爲您正在尋找map函數。

In [1]: dfsub = [(1, 2), (3, 4), (5, 6)] 
In [2]: map(sum, dfsub) 
Out[2]: [3, 7, 11] 
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 
+0

因爲OP詢問行總和 – JaminSore

+0

@JaminSore,所以應該是'dfsub.apply(sum,axis = 1)',我不確定OP究竟需要什麼。但是增加了一個你建議的。感謝您的評論。 – falsetru

1

看來你試圖定義 「在線」 的功能,使用JavaScript語法:

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

(請注意,因爲我們正在調用方法,因此dfsub已經隱式傳遞。)

即使在Python中工作,它也不得不明確return的值。但是我們沒有大括號的內聯函數。取而代之的是,我們有lambda S:

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

這是一個表達,這就是爲什麼沒有return

這就是說,在目前的情況下,沒有任何需要。 sum已經是我們需要通過的事情了,正如@filtrutru的答案所示。