Выбор строк на основе условий (столбец) с помощью оператора сравнения> - PullRequest
0 голосов
/ 29 декабря 2018

Открывая python, я застрял, пытаясь выбрать строки (продукты питания) на основе значений столбца (макроэлементы).Мое условие использует реляционную операцию, и вывод не является правильным.(особенно если операторы> или <не имеют проблем с оператором ==).</p>

data.loc[data['protein']=='10']

Результат моего примера кода

enter image description here

Результат правильный, потому что все строки (продукты питания), кажется, имеютбелок со значением 10.

data.loc[data['protein']>'10']

Результат моего примера кода

enter image description here

Результат неверный, поскольку все строки имеютзначение, которое не соответствует данному условию (у вас есть строки с белком <10, как у вас есть строки с белком> 10).

data.loc[data['protein']>'10']

Есть какие-нибудь мысли по этому вопросу?Как вы думаете, это связано с форматом файла (см. Пример кода ниже)?Если так, как я могу обойти проблему?

data = pd.read_excel('Documents/test.xlsx',names=col_names,usecols="D,E,F,G,H,J,M,N,P,Q,R,T,Y,Z,AA", index_col =[3]).

Спасибо заранее и счастливых праздников !!

[РЕДАКТИРОВАНИЕ]

Так же я начал больше копать, я действительно сравниваю две разные вещи.@Daniel Mesejo тип белка - Объект.Так как я хочу иметь столбец белка в формате float, я решил сначала преобразовать его в строку, а затем в float.К сожалению, преобразование его в строку с использованием .astype(str) не сработало

результат

Ответы [ 2 ]

0 голосов
/ 29 декабря 2018

Ваша проблема в том, что вы сравниваете строку, а не целые числа.Изменить data.loc[data['protein']>'10'] на data.loc[int(data['protein'])>10]

0 голосов
/ 29 декабря 2018

Используйте data['protein'] = data['protein'].astype('int64') для преобразования строки в целое число, а затем повторите попытку.

...