下面的代码应该是迭代数据帧并写入“Valid”列。它只将最后一个值写入“Valid”中的所有行。你知道吗
for index, row in lxrx.iterrows():
time_cur = (row['time'])
low_val = csvm.loc['LXRX', time_cur].low
price = (row['Price'])
if price > low_val:
lxrx['Valid'] = price
else:
lxrx['Valid'] = 'Invalid'
测试我使用的:print(price)和print(low\val)
它输出我所期望的-每个价格然后每个低值:
3.13 2.8 2.1 3.06 3.36 3.06
它输出左下角,而不是我想要的右下角。你知道吗
Index Valid rather than Index Valid
0 3.36 0 3.13
1 3.36 1 2.10
2 3.36 2 3.36
我甚至试着在那个for循环中嵌套另一个for循环,这样我就可以引用Valid中的每一行,但这做了同样的事情。如何让它正确地写入每个值?你知道吗
您的错误如下:
此语法将
price
值或“Invalid”应用于整个列。你知道吗而是使用
.loc
对要输入值的行/列进行特定索引:同样,正如前面提到的,这个循环将是一个缓慢的解决方案,您正在尝试做什么,可能有一个更简单的矢量化方法来解决这个问题,通过合并从
csvm
到lxrx
的低值作为一个列,然后执行如下操作:lxrx["Valid"] = np.where(lxrx["Price"] > lxrx["low_value_from_csvm"], lxrx["Price"], "Invalid")
相关问题 更多 >
编程相关推荐