如何将定义的函数应用于除已定义的其他列上

时间:2019-06-03 07:15:17

标签: pandas

我有一个函数,该函数从给定的数据帧中以“ 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)

但这似乎不起作用。

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)