我正在尝试将 perl 代码转换为 python,以便将列简单地乘以一些常量。我创建了一个带有多列浮点值的 pandas 数据框。这是 components.csv 文件的示例。
NA MULT NOA NOB CHARGE EX
0 8.0 1.0 24.0 24.0 0.0 1.0
1 8.0 1.0 24.0 24.0 0.0 1.0
2 8.0 1.0 6.0 6.0 0.0 1.0
3 20.0 1.0 18.0 18.0 0.0 1.0
4 23.0 1.0 21.0 21.0 0.0 1.0
5 26.0 1.0 24.0 24.0 0.0 1.0
6 11.0 1.0 13.0 13.0 0.0 0.0
7 16.0 1.0 19.0 19.0 1.0 0.0
8 1.0 1.0 4.0 4.0 -1.0 0.0
9 17.0 1.0 23.0 23.0 0.0 0.0
10 1.0 1.0 4.0 4.0 0.0 0.0
11 1.0 1.0 4.0 4.0 0.0 0.0
初始参数为:
$A1 = 9.3692400791;
$A2 = 9.4492960287;
$B = 3.8320915550;
$C = 9.5936653352;
$D = 1.8739215238;
$E = 2.4908584058;
预期的输出是单列(d5):
Df5
-0.2249
-0.2249
-0.0562
-0.1686
-0.1968
-0.2249
-0.1218
-0.1780
-0.0384
-0.2155
-0.0375
-0.0375
使用以下方法解析数据帧后:
pd.set_option('precision', 8)
df = pd.read_csv("unscaled_components_delimit.csv", delimiter= ",", header=0)
我有多个条件要检查,例如以下脚本:
if (df['NA'] > 1).any():
print(True)
elif (df['NA'] == 1).any():
print(False)
然而,上面的代码只打印一个 True 值,即使在标题为 NA 的列中有多个 1.0 值,这意味着它不会传递给第二个 elif。我使用了函数 any() ,也许应该使用我目前不知道的另一个函数。因此,有人可能会为此提出解决方案吗?
目标是将列(标题 NA)的每个元素与数字 1(大于或等于)进行比较。然后,对其他列执行一些具有其他条件的操作。
我将不胜感激任何帮助或建议。
为了更清楚起见,以下代码包含具有所有必需条件的最终所需代码:
if (df['NA'] > 1).any():
if (df['MULT'] == 1).any():
if ((df['NOB'] != 1).any() or (df['NOB'] ==1).any()):
d5 = -A1*df['NOB']
elif((df['NOB'] == 1).any()):
d5 = -E*df['NOB']
else:
d5 = -A2*df['NOB'] - B*(df['NOA']-df['NOB'])
三国纷争
慕容708150
忽然笑
随时随地看视频慕课网APP
相关分类