【发布时间】:2021-01-13 12:22:03
【问题描述】:
我正在尝试创建一个介于 0 和 100 之间的数字数组 (socarray)。该数组以单个项目 (整数 50) 启动。
要追加的数字是 soc,从 50 开始。soc 的值会根据数据帧 (df['Pred']) 中预测列的值而改变。
- 如果 df['Pred']>0 且 soc
- 如果 df['Pred'] 0 则 soc -=50 并附加 到 socarray
- 否则我们只附加 soc(不添加或减去值)。
我的代码如下。我正在使用 For 循环、while 循环和 If 语句。
范围设置为迭代 10 次(数据帧的长度)。但是,代码的输出是一个长度为 82 的数组。
soc = 50
socarray = [50]
for i in range(1,10):
counter = 1
while counter < len(df):
if (df.iloc[i]['Pred'] > 0) & (soc<100):
soc += 50
socarray.append(soc)
counter += 1
elif (df.iloc[i]['Pred'] < 0) & (soc>0):
soc -= 50
socarray.append(soc)
counter += 1
else:
soc = soc
socarray.append(soc)
counter += 1
如果我将数组嵌入到 for 循环中,它会输出一个长度为 10 的数组,但它没有遵循正确的功能(特别是它不会在应该做的时候减去 'soc -= 50')
soc = 50
for i in range(1,len(df)):
socarray = [50]
counter = 1
while counter < len(df):
if (df.iloc[i]['Pred'] > 0) & (soc<100):
soc += 50
socarray.append(soc)
counter += 1
elif (df.iloc[i]['Pred MW'] < 0) & (soc>0):
soc -= 50
socarray.append(soc)
counter += 1
else:
soc = soc
socarray.append(soc)
counter += 1
有人可以帮我吗?
【问题讨论】:
标签: python pandas numpy for-loop while-loop