在Pandas中,如何将函数应用于数据框的一行,该行中的每一项都应作为参数传递给该函数?

时间:2020-05-01 14:36:10

标签: python pandas dataframe

换句话说,假设我有一个带有一些列的数据框,并且表中有数字数据。例如,我有身高,体重,年龄。带有数字的简单数据框。

我想要的是创建一个新系列(并将其添加到数据框),该系列是使用每一行中的每个项目进行某些计算的结果。 所以我有一个函数f(身高,体重,年龄),我希望该函数的数值结果存储为它自己的新列。

所以在给定的行上,我将得到身高,体重,年龄和f()的结果。

对不起,我浏览了许多熊猫应用示例,尽管看起来似乎应该可行,但找不到任何可以完全满足我的想法的东西!

谢谢!

2 个答案:

答案 0 :(得分:1)

让我们来看一个例子,其中有一个我们拥有体重和身高的数据框。

我们可以使用apply函数将函数应用于具有所有列或选定列的每一行,如下所示:

df = pd.DataFrame({"height": [180, 178, 190, 166], 'weight': [78, 72, 89, 75] })

print(df)

   height  weight
0     180      78
1     178      72
2     190      89
3     166      75

def bmi(x):
    return x.weight/((x.height/100)**2)

df['bmi'] = df.apply(lambda x: bmi(x), axis=1)

print(df)

   height  weight        bmi
0     180      78  24.074074
1     178      72  22.724403
2     190      89  24.653740
3     166      75  27.217303

答案 1 :(得分:0)

现在,如果我理解正确,您的函数会使用您的数据(高度,重量和年龄)为每一行计算一个值,该值将位于数据框中的新列中,对吗?

现在您要逐行执行此操作,我不确定为什么这样做?您是否要遍历数据框?我没有关于您的功能的足够信息来告诉您是否真的需要这样做,但是通常我会避免使用这种方法,因为它比运行如下所示的胜利过程要慢得多:

--present-mode 0

示例,假设您的函数将身高乘以体重,然后再除以年龄,因此您可以执行以下操作:

--present-mode 2
相关问题