对存储在两个单独文档中的坐标运行True / False语句
还是很新的这一切,所以任何帮助,build议等等,真的很感激。
下面是我的代码:
import math import pandas file1 = pandas.read_excel('Book1.xlsx') file2 = pandas.read_excel('Book2.xlsx') file1['RA_diff'] = file2['RA'] - file1['RA'] file1['DEC_diff'] = file2['DEC'] - file1['DEC'] dist = file1.apply(lambda row: math.hypot(row['RA_diff'], row['DEC_diff']), axis=1) if dist.values >= 5: print False elif dist.values <= 5: print True, dist
但是当我运行这个代码时,我得到:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all()
我想我知道我正试图让它读取两个单独的值,因为没有T / F命令(print dist),我得到:
0 4.472136
所以,我不知道该怎么称呼它,但是我的猜测是我试图让它读取零值和/或多个值。
任何人都可以请解释我在这里做错了什么,以及如何解决它? 提前谢谢了!
顺便说一句,文档中的点被标记并出现在excel表格中:
书1:
xy 8 -5
书2:
xy 12 -3
问题在于这一行:
if dist.values >= 5: print False
dist.values
是一个pandas系列。 你甚至在印刷时certificate了这一点,并得到0 4.472136
。 当您将一个序列与一个数字进行比较时,会得到另一个序列,其中每个序列的成员都是一个布尔值。 问题在于你试图评估系列本身的真实性。
因此,回顾一下,系列dist.values >= 5
是一系列的真值。 if dist.values >= 5
正尝试确定dist.values >= 5
是否为true。 这是没有道理的。
如果你想知道系列中的一个项目的真相:
if dist.value[0] >= 5:
要么:
if (dist.value >= 5)[0]:
如果你想知道是否有任何项目,即使只有一个是真的:
if (dist.values >= 5).any()
或者所有的值都是真的
if (dist.values >= 5).all()
用系列中的单个值,这些都将被评估为相同的东西。