Рамки данных: поиск самой низкой цены на основе критериев - PullRequest
0 голосов
/ 27 октября 2018

У меня есть 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 не берет минимальную цену всех истинных значений?

Ответы [ 2 ]

0 голосов
/ 27 октября 2018

Можете ли вы привести пример данных?

Я попытался воспроизвести вашу ситуацию, и я получил следующее сообщение об ошибке:

TypeError: cannot do label indexing on <class 'pandas.core.indexes.base.Index'> with these indexers [800] of <class 'numpy.int64'>

Это ожидается, поскольку вы используете значениецены в качестве индекса, где loc ожидает то, что вы используете в качестве индекса в вашем фрейме данных (целые числа, если не указано).Я полагаю, что вы пытаетесь достичь в этом:

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()
0 голосов
/ 27 октября 2018

Попробуйте это:

laptops_15 = laptops_cleaned['price_euros'][laptops_cleaned['screen_size_inches'] > 15].min()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...