数据框:根据条件查找最低价格

时间:2018-10-27 13:41:08

标签: python dataframe

我有一个包含笔记本电脑和规格列表的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值的最低价格?

2 个答案:

答案 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()