python-3.x - 如何创建一个数据框,其中一列的输入是动态的并通过依赖于该列中另一个条目的 IF 语句派生
问题描述
我希望将使用 IF 语句计算第二列中的值的两列 Excel 表转换为 Pandas 数据框。
A 列数字是静态的。
B 列数字是动态的(B5 除外,它始终保持 100%)并在 Excel 中使用以下 IF 语句计算(第 5 行是起点/参考点):
B4 =IF((B5*(1+Variable_1))<2, B5*(1+Variable_1), 2)
B3 =IF((B4*(1+Variable_1))<2, B4*(1+Variable_1), 2)
B2 =IF((B3*(1+Variable_1))<2, B3*(1+Variable_1), 2)
...等等。
Variable_1 = A 列为负数时使用的百分比(在本例中为 5%)。
当 A 列切换为正值,即 >0% (A5) 时,IF 语句变为:
B6 =IF((B5*(1-Variable_2))>0, B5*(1-Variable_2), 0)
B7 =IF((B6*(1-Variable_2))>0, B6*(1-Variable_2), 0)
… 等等。
Variable_2 也是一个百分比,在 B 列为正数时使用(在本例中也是 5%)。
当谈到 Python 时,我是一个完全的业余爱好者,但我希望有人可以帮助我做一些在 Excel 中相当容易做的事情!提前谢谢了。
解决方案
好吧,那么每次您希望 A 更改时,您都可以重建您的数据框:
A = [i/100.0 for i in range(-4,5)]
v1 = 5/100.0
v2 = 5/100.0
b5 = 1.0
b4 = min(2,b5*(1+v1))
b3 = min(2,b4*(1+v1))
b2 = min(2,b3*(1+v1))
b1 = min(2,b2*(1+v1))
b6 = max(0,b5*(1-v2))
b7 = max(0,b6*(1-v2))
b8 = max(0,b7*(1-v2))
b9 = max(0,b8*(1-v2))
import pandas as pd
df = pd.DataFrame( {"A": A, "B": [b1, b2, b3, b4, b5, b6, b7, b8, b9]})
print(df)
输出:
A B
0 -0.04 1.215506
1 -0.03 1.157625
2 -0.02 1.102500
3 -0.01 1.050000
4 0.00 1.000000
5 0.01 0.950000
6 0.02 0.902500
7 0.03 0.857375
8 0.04 0.814506
推荐阅读
- activejdbc - 如果存在,activejdbc 迁移器强制创建“schema_version”表
- c++ - 如何在 C++ 中使用 Tink 从安全的 websocket 中读取数据
- javascript - 如何使用 SchemDraw 绘制“交互式”电路图?
- css - 为什么 css 滚动快照无法在 ios 较新版本上运行?
- android - 为什么 startActivity() 从接收器激活 MDM 提示会闪烁提示而不打开它?
- c++ - endl 是否需要刷新缓冲区?
- html - 如何防止 HTML、CSS 中的 3 个重叠图像?
- javascript - React.Native:平面列表未显示
- css - 在本机反应中,Flexbox中的文本垂直居中对齐
- algorithm - 是否有一种算法可以找到所有具有基数 j 的正整数 <= i 集?