我有一个函数,该函数从给定的数据帧中以“ Weight”和“ Height”列返回BMI 这是函数:
def BMI(dataframe):
return dataframe['Weight'] / (dataframe['Height']**2)
我在数据框“ data”中添加了新的“ Height In Meters”列:
data['Height In Meters'] = data['Height']/100
我接下来要做的是将原始函数应用于数据框'data', 但不是使用“高度”列,而是使用新的“以米为单位”列。
结果应该是数据框“ data”中名为“ BMI”的新列,该列针对每一行显示“以米为单位”的计算。
我尝试过:
data['BMI'] = data[['Weight','Height In Meters']].apply(BMI,axis=1)
但这似乎不起作用。
答案 0 :(得分:2)
您可以将列名作为参数传递:
def BMI(dataframe, col1, col2):
return dataframe[col1] / (dataframe[col2]**2)
a = data.apply(BMI, args=('Weight', 'Height'), axis=1)
data['Height In Meters'] = data['Height']/100
b = data.apply(BMI, args=('Weight', 'Height In Meters'), axis=1)