我有一个包含笔记本电脑和规格列表的csv文件。我想找到基于屏幕大于15英寸的笔记本电脑的最低价格。我的代码有什么问题?
laptops_15 = laptops_cleaned.loc[(laptops_cleaned['screen_size_inches'] > 15), laptops_cleaned['price_euros'].min()]
print(laptops_15)
#TypeError: cannot compare a dtyped [bool] array with a scalar of type [bool]
我不明白为什么Python不采用所有True值的最低价格?
答案 0 :(得分:1)
您能提供一个数据示例吗?
我试图重现您的情况,并且出现以下错误消息
TypeError: cannot do label indexing on <class 'pandas.core.indexes.base.Index'> with these indexers [800] of <class 'numpy.int64'>
这是预期的,因为您使用的是价格值作为索引,而loc期望的是您在数据帧中用作索引的值(如果未指定,则为int)。我相信您正在努力实现以下目标:
laptops_cleaned[laptops_cleaned['screen_size_inches'] > 15]['price_euros'].idxmin()
为您提供表条目的索引,以使“ price_euros”列最小,而在条目中,以使“ screen_size_inches”列大于15。
要获取最小值而不是最小索引,请使用min()
方法而不是idxmin()
laptops_cleaned[laptops_cleaned['screen_size_inches'] > 15]['price_euros'].min()
答案 1 :(得分:0)
尝试一下:
laptops_15 = laptops_cleaned['price_euros'][laptops_cleaned['screen_size_inches'] > 15].min()