我还处于Python职业生涯的开端,我正试图在DataFrame中添加一个具有BMI的列,该列是从另外两列计算得出的。然而,这还不适用于我的代码,也许有人可以帮助我!在我的数据中,我通常也没有信息;NaN";我认为这就是我的代码不起作用的原因。
df = pd.DataFrame({'gender': ['m', 'w', 'm', 'm'],
'bodyheight': [1.80, 1.70, 1.85, 'NaN'],
'bodyweight': [75, 59, 83, 90]},
columns=['gender', 'bodyheight', 'bodyweight'])
df.apply(lambda x: (x.bodyweight/(x.bodyheight**2)), axis=1)
这是因为其中有一个字符串NaN
。您可以将其替换为实际的NaN值;然后使用矢量化除法(我也觉得你忘记了用高度除以100来将厘米转换为米(:
df = df.replace('NaN', np.nan)
df['BMI'] = df['bodyweight'] / df['bodyheight'].div(100).pow(2)
输出:
gender bodyheight bodyweight BMI
0 m 180.0 75 23.148148
1 w 170.0 59 20.415225
2 m 185.0 83 24.251278
3 m NaN 90 NaN