gpt4 book ai didi

python - 在 pandas 列上应用函数

转载 作者:太空宇宙 更新时间:2023-11-03 14:01:51 24 4
gpt4 key购买 nike

我创建了下面的函数,它根据两个输入向量返回一个向量。我有一个具有不同列的 pandas 数据框,我想将该函数应用于我的数据框的某些列(一个 pandas 列将是我的函数的第一个向量(名义),另一个是我的函数的第二个向量(CPI)和我会将函数的结果分配给新的 pandas 列)。我怎样才能做到呢?

非常感谢您的帮助,

皮埃尔

nominal=[10,10,10,10,10,10,10,10,10,10,10,10]
CPI=[0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02]

def nominal_to_real(nominal,CPI):
real=[]
product=1
for i in range(len(nominal)):
product*=(CPI[i]+1)**(1/12)
real.append(nominal[i]/product)
return real

最佳答案

您可以使用cumprod对于矢量化解决方案:

nominal=[10,10,10,10,10,10,10,10,10,10,10,10]
CPI=[0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02]

def nominal_to_real(nominal,CPI):
real=[]
product=1
for i in range(len(nominal)):
product*=(CPI[i]+1)**(1/12)
real.append(nominal[i]/product)
return real

a = nominal_to_real(nominal,CPI)
df = pd.DataFrame(np.c_[nominal, CPI, a], columns=['nominal','CPI','real'])
<小时/>
df['real1'] = df['nominal'] / ((df['CPI'] + 1)**(1/12)).cumprod() 
print (df)
nominal CPI real real1
0 10.0 0.02 9.983511 9.983511
1 10.0 0.02 9.967050 9.967050
2 10.0 0.02 9.950616 9.950616
3 10.0 0.02 9.934209 9.934209
4 10.0 0.02 9.917829 9.917829
5 10.0 0.02 9.901475 9.901475
6 10.0 0.02 9.885149 9.885149
7 10.0 0.02 9.868850 9.868850
8 10.0 0.02 9.852578 9.852578
9 10.0 0.02 9.836332 9.836332
10 10.0 0.02 9.820114 9.820114
11 10.0 0.02 9.803922 9.803922

关于python - 在 pandas 列上应用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49184811/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com