使用datafram值作为参数的Python函数

2024-05-23 23:11:51 发布

您现在位置:Python中文网/ 问答频道 /正文

由于对python编程不是很熟悉,我必须在ETL中触发python函数

目标:在包含财务数据的表的每一行上运行RATE函数

这是我必须使用的函数

import numpy as np 

 
Solution = np.rate(nper, pmt, pv, fv,when=1,guess=0.01,tol=1e-06, maxiter=100) 

作为参数,我想使用数据帧中存储的表中的数据 在本例中,我仅给出一行作为示例,但m表很可能包含许多行

表:

^{tb1}$

有人知道如何构造函数吗

谢谢你的阅读


Tags: 数据函数importnumpy目标rateas编程
2条回答

np.rate使用类似于数组的输入,因此您可以简单地将列作为参数传递,并将收到一个速率数组:

df = pd.DataFrame.from_dict({'nper': {0: 56}, 'pmt': {0: 281}, 'pv': {0: -22057}, 'fv': {0: 9365}})
np.rate(df.nper, df.pmt, df.pv, df.fv, when=1, guess=0.01, tol=1e-06, maxiter=100)

这以向量化的方式使用数据帧df中每一行的值nperpmtpvfv。如果dfn行,该函数将返回一个与每行速率对应的长度n数组

要将结果速率存储在数据帧df中,可以将其分配到新列:

df['rate'] = np.rate(df.nper, df.pmt, df.pv, df.fv, when=1, guess=0.01, tol=1e-06, maxiter=100)

注意到{{CD1>}被弃用,因此您应该考虑使用NUMPY金融库中的相应函数,^ {A1}。

您可以为rate函数创建一个单独的函数。 然后,您可以将df.apply与轴1一起使用,这将把每一行传递到该函数中。您可以从每行中获取值,并将其放入numpy.rate函数中。 现在,在最后,您将得到一个名为Solution的新列,在该列中,您可以计算出rate函数的值:

import pandas as pd
import numpy as np

data = {
    "nper": [1,2,3],
    "pmt": [4,5,6],
    "pv": [7,8,9],
    "fv": [0,1,2]
}

df = pd.DataFrame(data)

def RunRateFunction(row):
    x = np.rate(row.nper, row.pmt, row.pv, row.fv,when=1,guess=0.01,tol=1e-06, maxiter=100)
    return x

df["Solution"] = df.apply(RunRateFunction, axis = 1)

输出:

   nper  pmt  pv  fv  Solution
0     1    4   7   0 -1.000000
1     2    5   8   1       NaN
2     3    6   9   2 -1.348887

相关问题 更多 >