对存储在两个单独文档中的坐标运行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() 

用系列中的单个值,这些都将被评估为相同的东西。