0
應用在多個列的功能時,我很新的Python和大熊貓所以也許我失去了一些東西,但我無法在網上找到解決我的問題。我嘗試運行一個函數,該函數應用於在一列熊貓數據框的三列上逐行彙總值。該任務與描述的here完全相同。然而,所提出的解決方案,我總是得到錯誤:錯誤的大熊貓數據幀
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in vecSd
TypeError: only length-1 arrays can be converted to Python scalars
這裏是我的函數的例子,我想做的事:
import pandas as pd
from math import sqrt, pow
# my function
def vector(x, y, z):
vec=sqrt(pow(x,2)+pow(y,2)+pow(z,2))
return vec
# my data frame looks something like this
df=pd.DataFrame({'x':[12,53,-3,-41], 'y':[74,-45,25,-21], 'z':[-2,-64,-12,65]})
# this is the call
vector(df['x'],df['y'],df['z'])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in vecSd
TypeError: only length-1 arrays can be converted to Python scalars
我也試圖這樣定義功能:
def vector2(df):
x=df['x']
y=df['y']
z=df['z']
vec=sqrt(pow(x,2)+pow(y, 2)+pow(z, 2))
return vec
vector2(df)
但我總是得到同樣的錯誤信息: 回溯(最近通話最後一個): 文件 「」,1號線,在 文件「」,第5行,在vector2中 TypeError:只能將長度爲1的數組轉換爲Python標量
我在做什麼錯?
謝謝!而已。只是pow()的numpy函數似乎是np.power()。我在你的回答中編輯了它。 – tictoc 2013-02-22 12:42:44
@tictoc感謝您捕捉錯誤(我只是用numpy重寫了你的函數,而沒有檢查函數的名字)。 Ps:還有另外一種方法來做'power':看編輯 – 2013-02-22 16:30:16