2017-07-29 251 views
0

我有一個包含10列的數據框。我想添加一個新的'age_bmi'列,它應該是計算列乘以'age'*'bmi'。年齡是一個INT,bmi是FLOAT。在熊貓中添加計算列

然後創建具有11列的新數據幀。

我正在做的事情並不完全正確。我認爲這是一個語法問題。有任何想法嗎?

感謝

df2['age_bmi'] = df(['age'] * ['bmi']) 
print(df2) 

回答

2

嘗試df2['age_bmi'] = df.age * df.bmi

當您需要獲取列的值時,您正在試圖調用數據框,您可以通過鍵來訪問列的值,如字典或屬性,如果它是小寫名稱,並且沒有空格, t匹配內置的DataFrame方法。

有人在前些日子的評論中將其鏈接起來,這非常棒。我建議給它一塊手錶,即使你不做這些練習:https://www.youtube.com/watch?v=5JnMutdy6Fw

+0

完美的感謝科裏,我會檢查出視頻以及 – JD2775

+0

我檢查了到目前爲止,該視頻的第一個小時,它是非常奇妙的我知道了 。謝謝你的鏈接!這個人對他的教學有很大的幫助 – JD2775

+0

太棒了,很高興你在享受它。我仍然在看自己,但在第一個小時,我就像是「哦,噓!」!像敬畏了三次,你可以用它做很酷的事情。 –

3

正如Cory指出的那樣,你調用一個數據框作爲一個函數,它不會像你期望的那樣工作。這裏有4種方式來表示多個兩列,在大多數情況下,您會使用第一種方法。

In [299]: df['age_bmi'] = df.age * df.bmi 

,或者

In [300]: df['age_bmi'] = df.eval('age*bmi') 

,或者

In [301]: df['age_bmi'] = pd.eval('df.age*df.bmi') 

,或者

In [302]: df['age_bmi'] = df.age.mul(df.bmi)