python - 如何在python中动态创建列本身的总和
问题描述
我的原始数据是:
def f_ST(ST,F,T):
a=ST/F-1-np.log(ST/F)
return 2*a/T
df=pd.DataFrame(range(50,140,5),columns=['K'])
df['f(K0)']=df.apply(lambda x: f_ST(x.K,100,0.25),axis=1)
df['f(K1)']=df['f(K0)'].shift(-1)
df['dK']=df['K'].diff(1)
我想做的是:我有一个函数 f(k)
f(k)= (k-100)/100 - ln(k/100)
我想计算 w,它遵循以下步骤
- 得到 f(k) 的 1 周期前向值,然后计算
tmp(k)=f1_f(k)-f(k)/dk
- w 计算为
w[0]=tmpw[0]
w[n]-tmpw[n]-(w[0]+w[1]+...w[n-1])
结果看起来像
nbr date k f(k) f1_f(k) d_k tmpw w
10 2019-02-19 100 0.000000 0.009679 5.0 0.001936 0.001936
11 2019-02-19 105 0.009679 0.037519 5.0 0.005568 0.003632
12 2019-02-19 110 0.037519 0.081904 5.0 0.008877 0.003309
13 2019-02-19 115 0.081904 0.141428 5.0 ...
14 2019-02-19 120 0.141428 0.214852 5.0 ...
15 2019-02-19 125 0.214852 0.301086 5.0
16 2019-02-19 130 0.301086 0.399163 5.0
问题:任何人都可以在不使用循环的情况下帮助推导出一个快速代码(不是数学上的)吗?
非常感谢!
解决方案
我不完全理解你的问题,对我来说所有这些符号都有点混乱。
如果我得到了您想要的正确结果,那么对于每一行,您都希望获得所有先前行的累积值。此行的另一列的值将基于此累积值计算。
在这种情况下,我更喜欢一些东西,先计算一个累积的列,然后再使用它。
例如:请注意,您需要调用 list(range()) 而不是 list,因此您的示例会引发错误
import pandas as pd
import numpy as np
def f_ST(ST,F,T):
a=ST/F-1-np.log(ST/F)
return 2*a/T
df=pd.DataFrame(list(range(50,140,5)),columns=['K'])
df['f(K0)']=df.apply(lambda x: f_ST(x.K,100,0.25),axis=1)
df['f(K1)']=df['f(K0)'].shift(-1)
df['dK']=df['K'].diff(1)
df['accumulate'] = df['K'].shift(1).cumsum()
df['currentVal-accumulated'] = df['K'] - df['accumulate']
print(df)
印刷:
K f(K0) ... accumulate currentVal-accumulated
0 50 1.545177 ... NaN NaN
1 55 1.182696 ... 50.0 5.0
2 60 0.886605 ... 105.0 -45.0
3 65 0.646263 ... 165.0 -100.0
4 70 0.453400 ... 230.0 -160.0
5 75 0.301457 ... 300.0 -225.0
6 80 0.185148 ... 375.0 -295.0
7 85 0.100151 ... 455.0 -370.0
8 90 0.042884 ... 540.0 -450.0
9 95 0.010346 ... 630.0 -535.0
10 100 0.000000 ... 725.0 -625.0
11 105 0.009679 ... 825.0 -720.0
12 110 0.037519 ... 930.0 -820.0
13 115 0.081904 ... 1040.0 -925.0
14 120 0.141428 ... 1155.0 -1035.0
15 125 0.214852 ... 1275.0 -1150.0
16 130 0.301086 ... 1400.0 -1270.0
17 135 0.399163 ... 1530.0 -1395.0
[18 rows x 6 columns]
推荐阅读
- eclipse - Scala 工作表未评估 REPL 并在右侧打印结果
- javascript - 如何在 textContent (JS) 中添加换行符?
- javascript - 无法将 json 数据加载到 D3.JS
- python - Python客户端-服务器套接字错误[Errno 9]错误的文件描述符
- c++ - 为什么 Clang 不喜欢 __DATE__ 宏?
- sql - 用于选择颜色的 SQL 查询不像颜色变体
- javascript - 使用 componentWillmount React.Js 渲染 Json 数据
- reactjs - 为什么反应路由器重定向 nginx 服务器上的所有请求?
- webpack - webpack-dev-server cli --open localhost 在不同的端口
- python - 在 python 中为bloomberg API 安装blpapi 错误