2017-07-29 372 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)