Python类型错误问题TypeError:不支持的操作数类型 - :'Table'和'float'

时间:2018-04-28 23:22:02

标签: python

我有一张包含一些IMDB电影(电影名称,评级,年份)的表格。我想计算20世纪和21世纪所有电影的平均评分。

table_20th = imdb.where("Year",are.below(2000))
table_21th = imdb.where("Year",are.above_or_equal_to(2000))


rating_20th = table_20th.select("Rating")
rating_21th = table_21th.select("Rating")


average_20th_century_rating = float(np.average(rating_20th.column(0)))
average_21th_century_rating = float(np.average(rating_21th.column(0)))


print("Type 20th", type(average_20th_century_rating))
print("Type 21st", type(average_21th_century_rating))

print("Average 20th century rating:", average_20th_century_rating)
print("Average 21st century rating:", average_21st_century_rating)

print(abs(average_20th_century_rating - 8.2783625730994146) < 1e-5)
print(abs(average_21st_century_rating - 8.2379746835443033) < 1e-5)

20世纪电影的绝对(),但21世纪电影的绝对是一种类型错误。但是所有abs()参数都是浮点数。

生成以下输出

Type 20th <class 'float'>
Type 21st <class 'float'>
Average 20th century rating: 8.278362573099415
Average 21st century rating: Rating
8.23797
True

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-136-bc0060cc4666> in <module>()
     20 
     21 print(abs(average_20th_century_rating - 8.2783625730994146) < 1e-5)
---> 22 print(abs(average_21st_century_rating - 8.2379746835443033) < 1e-5)

TypeError: unsupported operand type(s) for -: 'Table' and 'float'

请有人给我一个提示吗?

1 个答案:

答案 0 :(得分:3)

检查average_21th_century_rating的最后两次使用。它们被错误地写成average_21st_century_rating,它绝对不是浮点数,而是类Rating类。