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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Pandas中,我如何将一个函数应用到数据框的某一行,其中行中的每一项都应该作为参数传递给函数?相关的知识,希望对你有一定的参考价值。

换句话说,比如说我有一个数据框,里面有一些列,表中有数字数据。例如,我有身高,体重,年龄。简单的数据框中装满了数字。

我想做一个新的系列(并将其添加到数据框架中),它是使用每行中的每个项目进行计算的结果。所以我有一个函数f(height, weight, age),我想将该函数的数值结果存储为它自己的新列。

所以在给定的行中,我有身高、体重、年龄和f()的结果。

很抱歉,我研究了很多pandas应用的例子,但没有找到任何能完全实现我的想法的例子,尽管它看起来应该是可行的。

先谢谢你了!

答案

现在,如果我理解正确的话,你的函数使用你的数据(身高,体重和年龄)为每一行计算一个值,这将是在数据框架中的一个新的列,我是正确的吗?

现在你想逐行计算,我不知道为什么,你想在你的数据框架中迭代吗?我对你的函数没有足够的信息来判断是否真的需要这样做,但一般来说,我会避免这种方法,因为它比运行像下面这样的胜利过程要慢得多。

df['result'] = #whatever your function is doing using the df['height', 'weight', 'age']

举个例子,假设你的函数是用体重乘以身高,再除以年龄,那么你可以做以下的事情。

df['result'] = (df['height'] * df['weight']) / df['age']
另一答案

让我们举个例子,我们有一个数据框,里面有体重和身高。

我们可以使用 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

以上是关于在Pandas中,我如何将一个函数应用到数据框的某一行,其中行中的每一项都应该作为参数传递给函数?的主要内容,如果未能解决你的问题,请参考以下文章

将 Pandas 数据框的选择保存到 csv [重复]

如何使用 Python/Pandas 将数据框的其他行合并到当前行

如何使用 Pandas 数据框的常用键填充多个字典?

如何在 Python 中创建具有两列作为元组或 Pandas 数据框的单个变量?

如何将 numpy 数组存储在 Pandas 数据框的列中?

如何将 numpy 数组存储在 Pandas 数据框的列中?