首页 > 解决方案 > 使用 if 语句过滤列以计算新的单元格值。值错误:

问题描述

angle_rad = []
i = 0
for i in range(len(X)):
    if ((Y-track.Doublewide_y[i]) <0 and (X-track.Doublewide_x[i]) <0).all:
        angle_rad.append(math.atan((Y-track.Doublewide_y[i])/(X-track.Doublewide_x[i])))
    elif ((Y-track.Doublewide_y[i]) <0 and (X-track.Doublewide_x[i]) >=0).all:
        angle_rad.append(math.pi - math.atan((Y-track.Doublewide_y[i])/(X-track.Doublewide_x[i])))
    elif ((Y-track.Doublewide_y[i]) >=0 and (X-track.Doublewide_x[i]) >=0).all:
        angle_rad.append(math.atan((Y-track.Doublewide_y[i])/(X-track.Doublewide_x[i]))+math.pi)

这是我在脚本中创建的循环。我正在尝试过滤数据集并根据此循环中的条件更改值。当我运行它时,我得到错误:

''' ValueError: Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。'''

标签: python

解决方案


看来您有一个多维数组。所以你应该在 if 条件下分别比较每个值。例如,您的数组可能是x = [ [1,-2,3],[-4,5,6] ]这样,在比较时您应该检查它们中的每一个是正数还是负数。

for i in range(len(x)):
    for j in range(len(x[i])):
        if x[i][j] > 0:
            do something here

推荐阅读